mirror of
https://github.com/php/php-src.git
synced 2024-09-22 10:27:25 +00:00
use ex-API
This commit is contained in:
parent
6553540153
commit
ad764253ca
100
ext/ereg/ereg.c
100
ext/ereg/ereg.c
@ -177,9 +177,9 @@ static void _php3_reg_eprint(int err, regex_t *re) {
|
||||
|
||||
static void _php3_ereg(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
{
|
||||
pval *regex, /* Regular expression */
|
||||
*findin, /* String to apply expression to */
|
||||
*array = NULL; /* Optional register array */
|
||||
pval **regex, /* Regular expression */
|
||||
**findin, /* String to apply expression to */
|
||||
**array = NULL; /* Optional register array */
|
||||
regex_t re;
|
||||
regmatch_t subs[NS];
|
||||
int err, i, match_len, string_len;
|
||||
@ -193,7 +193,7 @@ static void _php3_ereg(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
|
||||
switch(ARG_COUNT(ht)) {
|
||||
case 2:
|
||||
if (getParameters(ht, 2, ®ex, &findin) == FAILURE) {
|
||||
if (getParametersEx(2, ®ex, &findin) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
/* don't bother doing substring matching if we're not going
|
||||
@ -201,7 +201,7 @@ static void _php3_ereg(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
copts |= REG_NOSUB;
|
||||
break;
|
||||
case 3:
|
||||
if (getParameters(ht, 3, ®ex, &findin, &array) == FAILURE) {
|
||||
if (getParametersEx(3, ®ex, &findin, &array) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
if (!ParameterPassedByReference(ht, 3)) {
|
||||
@ -215,15 +215,15 @@ static void _php3_ereg(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
|
||||
|
||||
/* compile the regular expression from the supplied regex */
|
||||
if (regex->type == IS_STRING) {
|
||||
err = regcomp(&re, regex->value.str.val, REG_EXTENDED | copts);
|
||||
if ((*regex)->type == IS_STRING) {
|
||||
err = regcomp(&re, (*regex)->value.str.val, REG_EXTENDED | copts);
|
||||
} else {
|
||||
/* we convert numbers to integers and treat them as a string */
|
||||
if (regex->type == IS_DOUBLE)
|
||||
convert_to_long(regex); /* get rid of decimal places */
|
||||
convert_to_string(regex);
|
||||
if ((*regex)->type == IS_DOUBLE)
|
||||
convert_to_long_ex(regex); /* get rid of decimal places */
|
||||
convert_to_string_ex(regex);
|
||||
/* don't bother doing an extended regex with just a number */
|
||||
err = regcomp(&re, regex->value.str.val, copts);
|
||||
err = regcomp(&re, (*regex)->value.str.val, copts);
|
||||
}
|
||||
|
||||
if (err) {
|
||||
@ -232,8 +232,8 @@ static void _php3_ereg(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
}
|
||||
|
||||
/* make a copy of the string we're looking in */
|
||||
convert_to_string(findin);
|
||||
string = estrndup(findin->value.str.val, findin->value.str.len);
|
||||
convert_to_string_ex(findin);
|
||||
string = estrndup((*findin)->value.str.val, (*findin)->value.str.len);
|
||||
|
||||
/* actually execute the regular expression */
|
||||
err = regexec(&re, string, (size_t) NS, subs, 0);
|
||||
@ -254,16 +254,16 @@ static void _php3_ereg(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
pval_destructor(array); /* start with clean array */
|
||||
array_init(array);
|
||||
pval_destructor(*array); /* start with clean array */
|
||||
array_init(*array);
|
||||
|
||||
for (i = 0; i < NS; i++) {
|
||||
start = subs[i].rm_so;
|
||||
end = subs[i].rm_eo;
|
||||
if (start != -1 && end > 0 && start < string_len && end < string_len && start < end) {
|
||||
add_index_stringl(array, i, string+start, end-start, 1);
|
||||
add_index_stringl(*array, i, string+start, end-start, 1);
|
||||
} else {
|
||||
add_index_bool(array, i, 0);
|
||||
add_index_bool(*array, i, 0);
|
||||
}
|
||||
}
|
||||
efree(buf);
|
||||
@ -437,45 +437,45 @@ char *_php3_regreplace(const char *pattern, const char *replace, const char *str
|
||||
|
||||
static void _php3_eregreplace(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
{
|
||||
pval *arg_pattern,
|
||||
*arg_replace,
|
||||
*arg_string;
|
||||
pval **arg_pattern,
|
||||
**arg_replace,
|
||||
**arg_string;
|
||||
char *pattern;
|
||||
char *string;
|
||||
char *replace;
|
||||
char *ret;
|
||||
|
||||
if (ARG_COUNT(ht) != 3 || getParameters(ht, 3, &arg_pattern, &arg_replace, &arg_string) == FAILURE) {
|
||||
if (ARG_COUNT(ht) != 3 || getParametersEx(3, &arg_pattern, &arg_replace, &arg_string) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
if (arg_pattern->type == IS_STRING) {
|
||||
if (arg_pattern->value.str.val && arg_pattern->value.str.len)
|
||||
pattern = estrndup(arg_pattern->value.str.val,arg_pattern->value.str.len);
|
||||
if ((*arg_pattern)->type == IS_STRING) {
|
||||
if ((*arg_pattern)->value.str.val && (*arg_pattern)->value.str.len)
|
||||
pattern = estrndup((*arg_pattern)->value.str.val,(*arg_pattern)->value.str.len);
|
||||
else
|
||||
pattern = empty_string;
|
||||
} else {
|
||||
convert_to_long(arg_pattern);
|
||||
convert_to_long_ex(arg_pattern);
|
||||
pattern = emalloc(2);
|
||||
pattern[0] = (char) arg_pattern->value.lval;
|
||||
pattern[0] = (char) (*arg_pattern)->value.lval;
|
||||
pattern[1] = '\0';
|
||||
}
|
||||
|
||||
if (arg_replace->type == IS_STRING) {
|
||||
if (arg_replace->value.str.val && arg_replace->value.str.len)
|
||||
replace = estrndup(arg_replace->value.str.val, arg_replace->value.str.len);
|
||||
if ((*arg_replace)->type == IS_STRING) {
|
||||
if ((*arg_replace)->value.str.val && (*arg_replace)->value.str.len)
|
||||
replace = estrndup((*arg_replace)->value.str.val, (*arg_replace)->value.str.len);
|
||||
else
|
||||
replace = empty_string;
|
||||
} else {
|
||||
convert_to_long(arg_replace);
|
||||
convert_to_long_ex(arg_replace);
|
||||
replace = emalloc(2);
|
||||
replace[0] = (char) arg_replace->value.lval;
|
||||
replace[0] = (char) (*arg_replace)->value.lval;
|
||||
replace[1] = '\0';
|
||||
}
|
||||
|
||||
convert_to_string(arg_string);
|
||||
if (arg_string->value.str.val && arg_string->value.str.len)
|
||||
string = estrndup(arg_string->value.str.val, arg_string->value.str.len);
|
||||
convert_to_string_ex(arg_string);
|
||||
if ((*arg_string)->value.str.val && (*arg_string)->value.str.len)
|
||||
string = estrndup((*arg_string)->value.str.val, (*arg_string)->value.str.len);
|
||||
else
|
||||
string = empty_string;
|
||||
|
||||
@ -514,7 +514,7 @@ PHP_FUNCTION(eregi_replace)
|
||||
split string into array by regular expression */
|
||||
PHP_FUNCTION(split)
|
||||
{
|
||||
pval *spliton, *str, *arg_count = NULL;
|
||||
pval **spliton, **str, **arg_count = NULL;
|
||||
regex_t re;
|
||||
regmatch_t subs[1];
|
||||
char *strp, *endp;
|
||||
@ -522,27 +522,27 @@ PHP_FUNCTION(split)
|
||||
|
||||
switch (ARG_COUNT(ht)) {
|
||||
case 2:
|
||||
if (getParameters(ht, 2, &spliton, &str) == FAILURE)
|
||||
if (getParametersEx(2, &spliton, &str) == FAILURE)
|
||||
WRONG_PARAM_COUNT;
|
||||
count = -1;
|
||||
break;
|
||||
case 3:
|
||||
if (getParameters(ht, 3, &spliton, &str, &arg_count) == FAILURE)
|
||||
if (getParametersEx(3, &spliton, &str, &arg_count) == FAILURE)
|
||||
WRONG_PARAM_COUNT;
|
||||
convert_to_long(arg_count);
|
||||
count = arg_count->value.lval;
|
||||
convert_to_long_ex(arg_count);
|
||||
count = (*arg_count)->value.lval;
|
||||
break;
|
||||
default:
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
convert_to_string(spliton);
|
||||
convert_to_string(str);
|
||||
convert_to_string_ex(spliton);
|
||||
convert_to_string_ex(str);
|
||||
|
||||
strp = str->value.str.val;
|
||||
endp = str->value.str.val + strlen(str->value.str.val);
|
||||
strp = (*str)->value.str.val;
|
||||
endp = (*str)->value.str.val + strlen((*str)->value.str.val);
|
||||
|
||||
err = regcomp(&re, spliton->value.str.val, REG_EXTENDED);
|
||||
err = regcomp(&re, (*spliton)->value.str.val, REG_EXTENDED);
|
||||
if (err) {
|
||||
php_error(E_WARNING, "unexpected regex error (%d)", err);
|
||||
RETURN_FALSE;
|
||||
@ -611,21 +611,21 @@ PHP_FUNCTION(split)
|
||||
Make regular expression for case insensitive match */
|
||||
PHPAPI PHP_FUNCTION(sql_regcase)
|
||||
{
|
||||
pval *string;
|
||||
pval **string;
|
||||
char *tmp;
|
||||
unsigned char c;
|
||||
register int i, j;
|
||||
|
||||
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &string)==FAILURE) {
|
||||
if (ARG_COUNT(ht)!=1 || getParametersEx(1, &string)==FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
convert_to_string(string);
|
||||
convert_to_string_ex(string);
|
||||
|
||||
tmp = (char *) emalloc(string->value.str.len*4+1);
|
||||
tmp = (char *) emalloc((*string)->value.str.len*4+1);
|
||||
|
||||
for (i=j=0; i<string->value.str.len; i++) {
|
||||
c = (unsigned char) string->value.str.val[i];
|
||||
for (i=j=0; i<(*string)->value.str.len; i++) {
|
||||
c = (unsigned char) (*string)->value.str.val[i];
|
||||
if(isalpha(c)) {
|
||||
tmp[j++] = '[';
|
||||
tmp[j++] = toupper(c);
|
||||
|
@ -177,9 +177,9 @@ static void _php3_reg_eprint(int err, regex_t *re) {
|
||||
|
||||
static void _php3_ereg(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
{
|
||||
pval *regex, /* Regular expression */
|
||||
*findin, /* String to apply expression to */
|
||||
*array = NULL; /* Optional register array */
|
||||
pval **regex, /* Regular expression */
|
||||
**findin, /* String to apply expression to */
|
||||
**array = NULL; /* Optional register array */
|
||||
regex_t re;
|
||||
regmatch_t subs[NS];
|
||||
int err, i, match_len, string_len;
|
||||
@ -193,7 +193,7 @@ static void _php3_ereg(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
|
||||
switch(ARG_COUNT(ht)) {
|
||||
case 2:
|
||||
if (getParameters(ht, 2, ®ex, &findin) == FAILURE) {
|
||||
if (getParametersEx(2, ®ex, &findin) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
/* don't bother doing substring matching if we're not going
|
||||
@ -201,7 +201,7 @@ static void _php3_ereg(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
copts |= REG_NOSUB;
|
||||
break;
|
||||
case 3:
|
||||
if (getParameters(ht, 3, ®ex, &findin, &array) == FAILURE) {
|
||||
if (getParametersEx(3, ®ex, &findin, &array) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
if (!ParameterPassedByReference(ht, 3)) {
|
||||
@ -215,15 +215,15 @@ static void _php3_ereg(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
|
||||
|
||||
/* compile the regular expression from the supplied regex */
|
||||
if (regex->type == IS_STRING) {
|
||||
err = regcomp(&re, regex->value.str.val, REG_EXTENDED | copts);
|
||||
if ((*regex)->type == IS_STRING) {
|
||||
err = regcomp(&re, (*regex)->value.str.val, REG_EXTENDED | copts);
|
||||
} else {
|
||||
/* we convert numbers to integers and treat them as a string */
|
||||
if (regex->type == IS_DOUBLE)
|
||||
convert_to_long(regex); /* get rid of decimal places */
|
||||
convert_to_string(regex);
|
||||
if ((*regex)->type == IS_DOUBLE)
|
||||
convert_to_long_ex(regex); /* get rid of decimal places */
|
||||
convert_to_string_ex(regex);
|
||||
/* don't bother doing an extended regex with just a number */
|
||||
err = regcomp(&re, regex->value.str.val, copts);
|
||||
err = regcomp(&re, (*regex)->value.str.val, copts);
|
||||
}
|
||||
|
||||
if (err) {
|
||||
@ -232,8 +232,8 @@ static void _php3_ereg(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
}
|
||||
|
||||
/* make a copy of the string we're looking in */
|
||||
convert_to_string(findin);
|
||||
string = estrndup(findin->value.str.val, findin->value.str.len);
|
||||
convert_to_string_ex(findin);
|
||||
string = estrndup((*findin)->value.str.val, (*findin)->value.str.len);
|
||||
|
||||
/* actually execute the regular expression */
|
||||
err = regexec(&re, string, (size_t) NS, subs, 0);
|
||||
@ -254,16 +254,16 @@ static void _php3_ereg(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
pval_destructor(array); /* start with clean array */
|
||||
array_init(array);
|
||||
pval_destructor(*array); /* start with clean array */
|
||||
array_init(*array);
|
||||
|
||||
for (i = 0; i < NS; i++) {
|
||||
start = subs[i].rm_so;
|
||||
end = subs[i].rm_eo;
|
||||
if (start != -1 && end > 0 && start < string_len && end < string_len && start < end) {
|
||||
add_index_stringl(array, i, string+start, end-start, 1);
|
||||
add_index_stringl(*array, i, string+start, end-start, 1);
|
||||
} else {
|
||||
add_index_bool(array, i, 0);
|
||||
add_index_bool(*array, i, 0);
|
||||
}
|
||||
}
|
||||
efree(buf);
|
||||
@ -437,45 +437,45 @@ char *_php3_regreplace(const char *pattern, const char *replace, const char *str
|
||||
|
||||
static void _php3_eregreplace(INTERNAL_FUNCTION_PARAMETERS, int icase)
|
||||
{
|
||||
pval *arg_pattern,
|
||||
*arg_replace,
|
||||
*arg_string;
|
||||
pval **arg_pattern,
|
||||
**arg_replace,
|
||||
**arg_string;
|
||||
char *pattern;
|
||||
char *string;
|
||||
char *replace;
|
||||
char *ret;
|
||||
|
||||
if (ARG_COUNT(ht) != 3 || getParameters(ht, 3, &arg_pattern, &arg_replace, &arg_string) == FAILURE) {
|
||||
if (ARG_COUNT(ht) != 3 || getParametersEx(3, &arg_pattern, &arg_replace, &arg_string) == FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
if (arg_pattern->type == IS_STRING) {
|
||||
if (arg_pattern->value.str.val && arg_pattern->value.str.len)
|
||||
pattern = estrndup(arg_pattern->value.str.val,arg_pattern->value.str.len);
|
||||
if ((*arg_pattern)->type == IS_STRING) {
|
||||
if ((*arg_pattern)->value.str.val && (*arg_pattern)->value.str.len)
|
||||
pattern = estrndup((*arg_pattern)->value.str.val,(*arg_pattern)->value.str.len);
|
||||
else
|
||||
pattern = empty_string;
|
||||
} else {
|
||||
convert_to_long(arg_pattern);
|
||||
convert_to_long_ex(arg_pattern);
|
||||
pattern = emalloc(2);
|
||||
pattern[0] = (char) arg_pattern->value.lval;
|
||||
pattern[0] = (char) (*arg_pattern)->value.lval;
|
||||
pattern[1] = '\0';
|
||||
}
|
||||
|
||||
if (arg_replace->type == IS_STRING) {
|
||||
if (arg_replace->value.str.val && arg_replace->value.str.len)
|
||||
replace = estrndup(arg_replace->value.str.val, arg_replace->value.str.len);
|
||||
if ((*arg_replace)->type == IS_STRING) {
|
||||
if ((*arg_replace)->value.str.val && (*arg_replace)->value.str.len)
|
||||
replace = estrndup((*arg_replace)->value.str.val, (*arg_replace)->value.str.len);
|
||||
else
|
||||
replace = empty_string;
|
||||
} else {
|
||||
convert_to_long(arg_replace);
|
||||
convert_to_long_ex(arg_replace);
|
||||
replace = emalloc(2);
|
||||
replace[0] = (char) arg_replace->value.lval;
|
||||
replace[0] = (char) (*arg_replace)->value.lval;
|
||||
replace[1] = '\0';
|
||||
}
|
||||
|
||||
convert_to_string(arg_string);
|
||||
if (arg_string->value.str.val && arg_string->value.str.len)
|
||||
string = estrndup(arg_string->value.str.val, arg_string->value.str.len);
|
||||
convert_to_string_ex(arg_string);
|
||||
if ((*arg_string)->value.str.val && (*arg_string)->value.str.len)
|
||||
string = estrndup((*arg_string)->value.str.val, (*arg_string)->value.str.len);
|
||||
else
|
||||
string = empty_string;
|
||||
|
||||
@ -514,7 +514,7 @@ PHP_FUNCTION(eregi_replace)
|
||||
split string into array by regular expression */
|
||||
PHP_FUNCTION(split)
|
||||
{
|
||||
pval *spliton, *str, *arg_count = NULL;
|
||||
pval **spliton, **str, **arg_count = NULL;
|
||||
regex_t re;
|
||||
regmatch_t subs[1];
|
||||
char *strp, *endp;
|
||||
@ -522,27 +522,27 @@ PHP_FUNCTION(split)
|
||||
|
||||
switch (ARG_COUNT(ht)) {
|
||||
case 2:
|
||||
if (getParameters(ht, 2, &spliton, &str) == FAILURE)
|
||||
if (getParametersEx(2, &spliton, &str) == FAILURE)
|
||||
WRONG_PARAM_COUNT;
|
||||
count = -1;
|
||||
break;
|
||||
case 3:
|
||||
if (getParameters(ht, 3, &spliton, &str, &arg_count) == FAILURE)
|
||||
if (getParametersEx(3, &spliton, &str, &arg_count) == FAILURE)
|
||||
WRONG_PARAM_COUNT;
|
||||
convert_to_long(arg_count);
|
||||
count = arg_count->value.lval;
|
||||
convert_to_long_ex(arg_count);
|
||||
count = (*arg_count)->value.lval;
|
||||
break;
|
||||
default:
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
convert_to_string(spliton);
|
||||
convert_to_string(str);
|
||||
convert_to_string_ex(spliton);
|
||||
convert_to_string_ex(str);
|
||||
|
||||
strp = str->value.str.val;
|
||||
endp = str->value.str.val + strlen(str->value.str.val);
|
||||
strp = (*str)->value.str.val;
|
||||
endp = (*str)->value.str.val + strlen((*str)->value.str.val);
|
||||
|
||||
err = regcomp(&re, spliton->value.str.val, REG_EXTENDED);
|
||||
err = regcomp(&re, (*spliton)->value.str.val, REG_EXTENDED);
|
||||
if (err) {
|
||||
php_error(E_WARNING, "unexpected regex error (%d)", err);
|
||||
RETURN_FALSE;
|
||||
@ -611,21 +611,21 @@ PHP_FUNCTION(split)
|
||||
Make regular expression for case insensitive match */
|
||||
PHPAPI PHP_FUNCTION(sql_regcase)
|
||||
{
|
||||
pval *string;
|
||||
pval **string;
|
||||
char *tmp;
|
||||
unsigned char c;
|
||||
register int i, j;
|
||||
|
||||
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &string)==FAILURE) {
|
||||
if (ARG_COUNT(ht)!=1 || getParametersEx(1, &string)==FAILURE) {
|
||||
WRONG_PARAM_COUNT;
|
||||
}
|
||||
|
||||
convert_to_string(string);
|
||||
convert_to_string_ex(string);
|
||||
|
||||
tmp = (char *) emalloc(string->value.str.len*4+1);
|
||||
tmp = (char *) emalloc((*string)->value.str.len*4+1);
|
||||
|
||||
for (i=j=0; i<string->value.str.len; i++) {
|
||||
c = (unsigned char) string->value.str.val[i];
|
||||
for (i=j=0; i<(*string)->value.str.len; i++) {
|
||||
c = (unsigned char) (*string)->value.str.val[i];
|
||||
if(isalpha(c)) {
|
||||
tmp[j++] = '[';
|
||||
tmp[j++] = toupper(c);
|
||||
|
Loading…
Reference in New Issue
Block a user