summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Hill <ohill@php.net>2008-06-25 12:16:17 +0000
committerOlivier Hill <ohill@php.net>2008-06-25 12:16:17 +0000
commitc5ec48e858800afd14d59e2b32dc94a3e29cc5c3 (patch)
tree0ed7a99b305a53e0de22785864c832a09319fcb8
parent624c8f2f66688102b3effadb5aada3aabd04cf4f (diff)
downloadphp-git-c5ec48e858800afd14d59e2b32dc94a3e29cc5c3.tar.gz
New parameter parsing API
-rw-r--r--ext/standard/string.c577
-rw-r--r--ext/standard/tests/strings/addcslashes_001.phptbin1604 -> 1587 bytes
-rw-r--r--ext/standard/tests/strings/addcslashes_004.phpt6
-rw-r--r--ext/standard/tests/strings/addslashes_error.phpt4
-rw-r--r--ext/standard/tests/strings/addslashes_variation1.phpt24
-rw-r--r--ext/standard/tests/strings/chr_ord.phptbin3181 -> 3203 bytes
-rw-r--r--ext/standard/tests/strings/nl2br_error.phpt4
-rw-r--r--ext/standard/tests/strings/nl2br_variation5.phpt24
-rw-r--r--ext/standard/tests/strings/str_ireplace.phpt6
-rw-r--r--ext/standard/tests/strings/str_pad.phptbin9780 -> 9818 bytes
-rw-r--r--ext/standard/tests/strings/str_repeat.phptbin10821 -> 16786 bytes
-rw-r--r--ext/standard/tests/strings/str_replace.phpt10
-rw-r--r--ext/standard/tests/strings/strip_tags_error.phpt4
-rw-r--r--ext/standard/tests/strings/strip_tags_variation1.phpt24
-rw-r--r--ext/standard/tests/strings/strip_tags_variation3.phpt34
-rw-r--r--ext/standard/tests/strings/stripslashes_error.phpt4
-rw-r--r--ext/standard/tests/strings/stripslashes_variation1.phpt24
-rw-r--r--ext/standard/tests/strings/strrev_error.phpt4
-rw-r--r--ext/standard/tests/strings/strrev_variation4.phpt24
-rw-r--r--ext/standard/tests/strings/strtr_error.phpt6
-rw-r--r--ext/standard/tests/strings/strtr_variation5.phpt16
-rw-r--r--ext/standard/tests/strings/strtr_variation7.phpt16
-rw-r--r--ext/standard/tests/strings/strtr_variation9.phpt68
-rw-r--r--ext/standard/tests/strings/substr.phptbin4706 -> 4770 bytes
-rw-r--r--ext/standard/tests/strings/substr_count_error.phpt8
-rw-r--r--ext/standard/tests/strings/substr_count_variation_001.phpt18
-rw-r--r--ext/standard/tests/strings/ucwords_error.phpt4
-rw-r--r--ext/standard/tests/strings/ucwords_variation1.phpt26
28 files changed, 430 insertions, 505 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c
index 142e1f4ace..444734327b 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -2123,38 +2123,33 @@ PHP_FUNCTION(chunk_split)
Returns part of a string */
PHP_FUNCTION(substr)
{
- zval **str, **from, **len;
+ char *str;
int l;
int f;
+ int str_len;
int argc = ZEND_NUM_ARGS();
-
- if (argc < 2 || argc > 3 || zend_get_parameters_ex(argc, &str, &from, &len) == FAILURE) {
- WRONG_PARAM_COUNT;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl|l", &str, &str_len, &f, &l) == FAILURE) {
+ return;
}
- convert_to_string_ex(str);
- convert_to_long_ex(from);
-
if (argc > 2) {
- convert_to_long_ex(len);
- l = Z_LVAL_PP(len);
- if ((l < 0 && -l > Z_STRLEN_PP(str))) {
+ if ((l < 0 && -l > str_len)) {
RETURN_FALSE;
- } else if (l > Z_STRLEN_PP(str)) {
- l = Z_STRLEN_PP(str);
+ } else if (l > str_len) {
+ l = str_len;
}
} else {
- l = Z_STRLEN_PP(str);
+ l = str_len;
}
- f = Z_LVAL_PP(from);
- if (f > Z_STRLEN_PP(str)) {
+ if (f > str_len) {
RETURN_FALSE;
- } else if (f < 0 && -f > Z_STRLEN_PP(str)) {
+ } else if (f < 0 && -f > str_len) {
f = 0;
}
- if (l < 0 && (l + Z_STRLEN_PP(str) - f) < 0) {
+ if (l < 0 && (l + str_len - f) < 0) {
RETURN_FALSE;
}
@@ -2162,7 +2157,7 @@ PHP_FUNCTION(substr)
* of the string
*/
if (f < 0) {
- f = Z_STRLEN_PP(str) + f;
+ f = str_len + f;
if (f < 0) {
f = 0;
}
@@ -2172,21 +2167,21 @@ PHP_FUNCTION(substr)
* needed to stop that many chars from the end of the string
*/
if (l < 0) {
- l = (Z_STRLEN_PP(str) - f) + l;
+ l = (str_len - f) + l;
if (l < 0) {
l = 0;
}
}
- if (f >= Z_STRLEN_PP(str)) {
+ if (f >= str_len) {
RETURN_FALSE;
}
- if ((f + l) > Z_STRLEN_PP(str)) {
- l = Z_STRLEN_PP(str) - f;
+ if ((f + l) > str_len) {
+ l = str_len - f;
}
- RETURN_STRINGL(Z_STRVAL_PP(str) + f, l, 1);
+ RETURN_STRINGL(str + f, l, 1);
}
/* }}} */
@@ -2207,9 +2202,8 @@ PHP_FUNCTION(substr_replace)
HashPosition pos_str, pos_from, pos_repl, pos_len;
zval **tmp_str = NULL, **tmp_from = NULL, **tmp_repl = NULL, **tmp_len= NULL;
-
- if (argc < 3 || argc > 4 || zend_get_parameters_ex(argc, &str, &repl, &from, &len) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ZZZ|Z", &str, &repl, &from, &len) == FAILURE) {
+ return;
}
if (Z_TYPE_PP(str) != IS_ARRAY) {
@@ -2424,26 +2418,23 @@ PHP_FUNCTION(substr_replace)
Quotes meta characters */
PHP_FUNCTION(quotemeta)
{
- zval **arg;
char *str, *old;
char *old_end;
char *p, *q;
char c;
-
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) {
- WRONG_PARAM_COUNT;
- }
-
- convert_to_string_ex(arg);
-
- old = Z_STRVAL_PP(arg);
- old_end = Z_STRVAL_PP(arg) + Z_STRLEN_PP(arg);
+ int old_len;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &old, &old_len) == FAILURE) {
+ return;
+ }
+
+ old_end = old + old_len;
+
if (old == old_end) {
RETURN_FALSE;
}
- str = safe_emalloc(2, Z_STRLEN_PP(arg), 1);
+ str = safe_emalloc(2, old_len, 1);
for (p = old, q = str; p != old_end; p++) {
c = *p;
@@ -2475,14 +2466,14 @@ PHP_FUNCTION(quotemeta)
Returns ASCII value of character */
PHP_FUNCTION(ord)
{
- zval **str;
+ char *str;
+ int str_len;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &str) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(str);
-
- RETURN_LONG((unsigned char) Z_STRVAL_PP(str)[0]);
+
+ RETURN_LONG((unsigned char) str[0]);
}
/* }}} */
@@ -2572,19 +2563,19 @@ PHP_FUNCTION(lcfirst)
Uppercase the first character of every word in a string */
PHP_FUNCTION(ucwords)
{
- zval **str;
+ char *str;
register char *r, *r_end;
+ int str_len;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &str) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(str);
- if (!Z_STRLEN_PP(str)) {
+ if (!str_len) {
RETURN_EMPTY_STRING();
}
- ZVAL_STRINGL(return_value, Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1);
+ ZVAL_STRINGL(return_value, str, str_len, 1);
r = Z_STRVAL_P(return_value);
*r = toupper((unsigned char) *r);
@@ -2734,11 +2725,13 @@ static void php_strtr_array(zval *return_value, char *str, int slen, HashTable *
Translates characters in str using given translation tables */
PHP_FUNCTION(strtr)
{
- zval **str, **from, **to;
+ zval **from;
+ char *str, *to;
+ int str_len, to_len;
int ac = ZEND_NUM_ARGS();
-
- if (ac < 2 || ac > 3 || zend_get_parameters_ex(ac, &str, &from, &to) == FAILURE) {
- WRONG_PARAM_COUNT;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sZ|s", &str, &str_len, &from, &to, &to_len) == FAILURE) {
+ return;
}
if (ac == 2 && Z_TYPE_PP(from) != IS_ARRAY) {
@@ -2746,27 +2739,24 @@ PHP_FUNCTION(strtr)
RETURN_FALSE;
}
- convert_to_string_ex(str);
-
/* shortcut for empty string */
- if (Z_STRLEN_PP(str) == 0) {
+ if (str_len == 0) {
RETURN_EMPTY_STRING();
}
if (ac == 2) {
- php_strtr_array(return_value, Z_STRVAL_PP(str), Z_STRLEN_PP(str), HASH_OF(*from));
+ php_strtr_array(return_value, str, str_len, HASH_OF(*from));
} else {
convert_to_string_ex(from);
- convert_to_string_ex(to);
- ZVAL_STRINGL(return_value, Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1);
+ ZVAL_STRINGL(return_value, str, str_len, 1);
php_strtr(Z_STRVAL_P(return_value),
Z_STRLEN_P(return_value),
Z_STRVAL_PP(from),
- Z_STRVAL_PP(to),
+ to,
MIN(Z_STRLEN_PP(from),
- Z_STRLEN_PP(to)));
+ to_len));
}
}
/* }}} */
@@ -2775,27 +2765,26 @@ PHP_FUNCTION(strtr)
Reverse a string */
PHP_FUNCTION(strrev)
{
- zval **str;
- char *s, *e, *n, *p;
+ char *str;
+ char *e, *n, *p;
+ int str_len;
- if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &str) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(str);
- n = emalloc(Z_STRLEN_PP(str)+1);
+ n = emalloc(str_len+1);
p = n;
- s = Z_STRVAL_PP(str);
- e = s + Z_STRLEN_PP(str);
+ e = str + str_len;
- while (--e>=s) {
+ while (--e>=str) {
*p++ = *e;
}
*p = '\0';
- RETVAL_STRINGL(n, Z_STRLEN_PP(str), 0);
+ RETVAL_STRINGL(n, str_len, 0);
}
/* }}} */
@@ -2849,22 +2838,21 @@ static int php_similar_char(const char *txt1, int len1, const char *txt2, int le
Calculates the similarity between two strings */
PHP_FUNCTION(similar_text)
{
- zval **t1, **t2, **percent;
+ char *t1, *t2;
+ zval **percent;
int ac = ZEND_NUM_ARGS();
int sim;
+ int t1_len, t2_len;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|Z", &t1, &t1_len, &t2, &t2_len, &percent) == FAILURE) {
+ return;
+ }
- if (ac < 2 || ac > 3 || zend_get_parameters_ex(ac, &t1, &t2, &percent) == FAILURE) {
- WRONG_PARAM_COUNT;
- }
-
- convert_to_string_ex(t1);
- convert_to_string_ex(t2);
-
if (ac > 2) {
convert_to_double_ex(percent);
}
- if (Z_STRLEN_PP(t1) + Z_STRLEN_PP(t2) == 0) {
+ if (t1_len + t2_len == 0) {
if (ac > 2) {
Z_DVAL_PP(percent) = 0;
}
@@ -2872,10 +2860,10 @@ PHP_FUNCTION(similar_text)
RETURN_LONG(0);
}
- sim = php_similar_char(Z_STRVAL_PP(t1), Z_STRLEN_PP(t1), Z_STRVAL_PP(t2), Z_STRLEN_PP(t2));
+ sim = php_similar_char(t1, t1_len, t2, t2_len);
if (ac > 2) {
- Z_DVAL_PP(percent) = sim * 200.0 / (Z_STRLEN_PP(t1) + Z_STRLEN_PP(t2));
+ Z_DVAL_PP(percent) = sim * 200.0 / (t1_len + t2_len);
}
RETURN_LONG(sim);
@@ -2957,23 +2945,22 @@ PHPAPI void php_stripslashes(char *str, int *len TSRMLS_DC)
Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\n', '\r', '\t' etc...) */
PHP_FUNCTION(addcslashes)
{
- zval **str, **what;
+ char *str, *what;
+ int str_len, what_len;
- if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &str, &what) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &str, &str_len, &what, &what_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(str);
- convert_to_string_ex(what);
- if (Z_STRLEN_PP(str) == 0) {
+ if (str_len == 0) {
RETURN_EMPTY_STRING();
}
- if (Z_STRLEN_PP(what) == 0) {
- RETURN_STRINGL(Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1);
+ if (what_len == 0) {
+ RETURN_STRINGL(str, str_len, 1);
}
- Z_STRVAL_P(return_value) = php_addcslashes(Z_STRVAL_PP(str), Z_STRLEN_PP(str), &Z_STRLEN_P(return_value), 0, Z_STRVAL_PP(what), Z_STRLEN_PP(what) TSRMLS_CC);
+ Z_STRVAL_P(return_value) = php_addcslashes(str, str_len, &Z_STRLEN_P(return_value), 0, what, what_len TSRMLS_CC);
RETURN_STRINGL(Z_STRVAL_P(return_value), Z_STRLEN_P(return_value), 0);
}
/* }}} */
@@ -2982,19 +2969,19 @@ PHP_FUNCTION(addcslashes)
Escapes single quote, double quotes and backslash characters in a string with backslashes */
PHP_FUNCTION(addslashes)
{
- zval **str;
-
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &str) == FAILURE) {
- WRONG_PARAM_COUNT;
+ char *str;
+ int str_len;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(str);
- if (Z_STRLEN_PP(str) == 0) {
+ if (str_len == 0) {
RETURN_EMPTY_STRING();
}
- RETURN_STRING(php_addslashes(Z_STRVAL_PP(str),
- Z_STRLEN_PP(str),
+ RETURN_STRING(php_addslashes(str,
+ str_len,
&Z_STRLEN_P(return_value), 0
TSRMLS_CC), 0);
}
@@ -3004,14 +2991,14 @@ PHP_FUNCTION(addslashes)
Strips backslashes from a string. Uses C-style conventions */
PHP_FUNCTION(stripcslashes)
{
- zval **str;
+ char *str;
+ int str_len;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &str) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(str);
- ZVAL_STRINGL(return_value, Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1);
+ ZVAL_STRINGL(return_value, str, str_len, 1);
php_stripcslashes(Z_STRVAL_P(return_value), &Z_STRLEN_P(return_value));
}
/* }}} */
@@ -3020,14 +3007,14 @@ PHP_FUNCTION(stripcslashes)
Strips backslashes from a string */
PHP_FUNCTION(stripslashes)
{
- zval **str;
+ char *str;
+ int str_len;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &str) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(str);
- ZVAL_STRINGL(return_value, Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1);
+ ZVAL_STRINGL(return_value, str, str_len, 1);
php_stripslashes(Z_STRVAL_P(return_value), &Z_STRLEN_P(return_value) TSRMLS_CC);
}
/* }}} */
@@ -3637,9 +3624,8 @@ static void php_str_replace_common(INTERNAL_FUNCTION_PARAMETERS, int case_sensit
int count = 0;
int argc = ZEND_NUM_ARGS();
- if (argc < 3 || argc > 4 ||
- zend_get_parameters_ex(argc, &search, &replace, &subject, &zcount) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ZZZ|Z", &search, &replace, &subject, &zcount) == FAILURE) {
+ return;
}
SEPARATE_ZVAL(search);
@@ -3718,42 +3704,26 @@ PHP_FUNCTION(str_ireplace)
*/
static void php_hebrev(INTERNAL_FUNCTION_PARAMETERS, int convert_newlines)
{
- zval **str, **max_chars_per_line;
+ char *str;
char *heb_str, *tmp, *target, *broken_str;
int block_start, block_end, block_type, block_length, i;
long max_chars=0;
int begin, end, char_count, orig_begin;
-
+ int str_len;
- switch (ZEND_NUM_ARGS()) {
- case 1:
- if (zend_get_parameters_ex(1, &str) == FAILURE) {
- RETURN_FALSE;
- }
- break;
- case 2:
- if (zend_get_parameters_ex(2, &str, &max_chars_per_line) == FAILURE) {
- RETURN_FALSE;
- }
- convert_to_long_ex(max_chars_per_line);
- max_chars = Z_LVAL_PP(max_chars_per_line);
- break;
- default:
- WRONG_PARAM_COUNT;
- break;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &str, &str_len, &max_chars) == FAILURE) {
+ return;
}
- convert_to_string_ex(str);
-
- if (Z_STRLEN_PP(str) == 0) {
+ if (str_len == 0) {
RETURN_FALSE;
}
- tmp = Z_STRVAL_PP(str);
+ tmp = str;
block_start=block_end=0;
- heb_str = (char *) emalloc(Z_STRLEN_PP(str)+1);
- target = heb_str+Z_STRLEN_PP(str);
+ heb_str = (char *) emalloc(str_len+1);
+ target = heb_str+str_len;
*target = 0;
target--;
@@ -3767,13 +3737,13 @@ static void php_hebrev(INTERNAL_FUNCTION_PARAMETERS, int convert_newlines)
do {
if (block_type == _HEB_BLOCK_TYPE_HEB) {
- while ((isheb((int)*(tmp+1)) || _isblank((int)*(tmp+1)) || ispunct((int)*(tmp+1)) || (int)*(tmp+1)=='\n' ) && block_end<Z_STRLEN_PP(str)-1) {
+ while ((isheb((int)*(tmp+1)) || _isblank((int)*(tmp+1)) || ispunct((int)*(tmp+1)) || (int)*(tmp+1)=='\n' ) && block_end<str_len-1) {
tmp++;
block_end++;
block_length++;
}
for (i = block_start; i<= block_end; i++) {
- *target = Z_STRVAL_PP(str)[i];
+ *target = str[i];
switch (*target) {
case '(':
*target = ')';
@@ -3812,7 +3782,7 @@ static void php_hebrev(INTERNAL_FUNCTION_PARAMETERS, int convert_newlines)
}
block_type = _HEB_BLOCK_TYPE_ENG;
} else {
- while (!isheb(*(tmp+1)) && (int)*(tmp+1)!='\n' && block_end < Z_STRLEN_PP(str)-1) {
+ while (!isheb(*(tmp+1)) && (int)*(tmp+1)!='\n' && block_end < str_len-1) {
tmp++;
block_end++;
block_length++;
@@ -3822,17 +3792,17 @@ static void php_hebrev(INTERNAL_FUNCTION_PARAMETERS, int convert_newlines)
block_end--;
}
for (i = block_end; i >= block_start; i--) {
- *target = Z_STRVAL_PP(str)[i];
+ *target = str[i];
target--;
}
block_type = _HEB_BLOCK_TYPE_HEB;
}
block_start=block_end+1;
- } while (block_end < Z_STRLEN_PP(str)-1);
+ } while (block_end < str_len-1);
- broken_str = (char *) emalloc(Z_STRLEN_PP(str)+1);
- begin=end=Z_STRLEN_PP(str)-1;
+ broken_str = (char *) emalloc(str_len+1);
+ begin=end=str_len-1;
target = broken_str;
while (1) {
@@ -3891,11 +3861,11 @@ static void php_hebrev(INTERNAL_FUNCTION_PARAMETERS, int convert_newlines)
efree(heb_str);
if (convert_newlines) {
- php_char_to_str(broken_str, Z_STRLEN_PP(str),'\n', "<br />\n", 7, return_value);
+ php_char_to_str(broken_str, str_len,'\n', "<br />\n", 7, return_value);
efree(broken_str);
} else {
Z_STRVAL_P(return_value) = broken_str;
- Z_STRLEN_P(return_value) = Z_STRLEN_PP(str);
+ Z_STRLEN_P(return_value) = str_len;
Z_TYPE_P(return_value) = IS_STRING;
}
}
@@ -3922,48 +3892,44 @@ PHP_FUNCTION(hebrevc)
PHP_FUNCTION(nl2br)
{
/* in brief this inserts <br /> before matched regexp \n\r?|\r\n? */
- zval **zstr;
char *tmp, *str;
int new_length;
char *end, *target;
int repl_cnt = 0;
-
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &zstr) == FAILURE) {
- WRONG_PARAM_COUNT;
+ int str_len;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(zstr);
-
- str = Z_STRVAL_PP(zstr);
- end = str + Z_STRLEN_PP(zstr);
+ tmp = str;
+ end = str + str_len;
/* it is really faster to scan twice and allocate mem once insted scanning once
and constantly reallocing */
- while (str < end) {
- if (*str == '\r') {
- if (*(str+1) == '\n') {
- str++;
+ while (tmp < end) {
+ if (*tmp == '\r') {
+ if (*(tmp+1) == '\n') {
+ tmp++;
}
repl_cnt++;
- } else if (*str == '\n') {
- if (*(str+1) == '\r') {
- str++;
+ } else if (*tmp == '\n') {
+ if (*(tmp+1) == '\r') {
+ tmp++;
}
repl_cnt++;
}
- str++;
+ tmp++;
}
if (repl_cnt == 0) {
- RETURN_STRINGL(Z_STRVAL_PP(zstr), Z_STRLEN_PP(zstr), 1);
+ RETURN_STRINGL(str, str_len, 1);
}
- new_length = Z_STRLEN_PP(zstr) + repl_cnt * (sizeof("<br />") - 1);
+ new_length = str_len + repl_cnt * (sizeof("<br />") - 1);
tmp = target = emalloc(new_length + 1);
- str = Z_STRVAL_PP(zstr);
-
while (str < end) {
switch (*str) {
case '\r':
@@ -3997,32 +3963,26 @@ PHP_FUNCTION(nl2br)
PHP_FUNCTION(strip_tags)
{
char *buf;
- zval **str, **allow=NULL;
+ char *str;
+ zval **allow=NULL;
char *allowed_tags=NULL;
int allowed_tags_len=0;
+ int str_len;
size_t retval_len;
- switch (ZEND_NUM_ARGS()) {
- case 1:
- if (zend_get_parameters_ex(1, &str) == FAILURE) {
- RETURN_FALSE;
- }
- break;
- case 2:
- if (zend_get_parameters_ex(2, &str, &allow) == FAILURE) {
- RETURN_FALSE;
- }
- convert_to_string_ex(allow);
- allowed_tags = Z_STRVAL_PP(allow);
- allowed_tags_len = Z_STRLEN_PP(allow);
- break;
- default:
- WRONG_PARAM_COUNT;
- break;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|Z", &str, &str_len, &allow) == FAILURE) {
+ return;
}
- convert_to_string_ex(str);
- buf = estrndup(Z_STRVAL_PP(str), Z_STRLEN_PP(str));
- retval_len = php_strip_tags_ex(buf, Z_STRLEN_PP(str), NULL, allowed_tags, allowed_tags_len, 0);
+
+ /* To maintain a certain BC, we allow anything for the second parameter and return original string */
+ if (allow != NULL) {
+ convert_to_string_ex(allow);
+ allowed_tags = Z_STRVAL_PP(allow);
+ allowed_tags_len = Z_STRLEN_PP(allow);
+ }
+
+ buf = estrndup(str, str_len);
+ retval_len = php_strip_tags_ex(buf, str_len, NULL, allowed_tags, allowed_tags_len, 0);
RETURN_STRINGL(buf, retval_len, 0);
}
/* }}} */
@@ -4135,24 +4095,23 @@ PHP_FUNCTION(setlocale)
Parses GET/POST/COOKIE data and sets global variables */
PHP_FUNCTION(parse_str)
{
- zval **arg;
- zval **arrayArg;
+ char *arg;
+ zval **arrayArg = NULL;
zval *sarg;
char *res = NULL;
- int argCount;
+ int arglen;
- argCount = ZEND_NUM_ARGS();
- if (argCount < 1 || argCount > 2 || zend_get_parameters_ex(argCount, &arg, &arrayArg) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|Z", &arg, &arglen, &arrayArg) == FAILURE) {
+ return;
}
- convert_to_string_ex(arg);
- sarg = *arg;
- if (Z_STRVAL_P(sarg) && *Z_STRVAL_P(sarg)) {
- res = estrndup(Z_STRVAL_P(sarg), Z_STRLEN_P(sarg));
+ if (!arglen) {
+ return;
}
- if (argCount == 1) {
+ res = estrndup(arg, arglen);
+
+ if (arrayArg == NULL) {
zval tmp;
if (!EG(active_symbol_table)) {
@@ -4496,45 +4455,39 @@ reg_char:
Returns the input string repeat mult times */
PHP_FUNCTION(str_repeat)
{
- zval **input_str; /* Input string */
- zval **mult; /* Multiplier */
+ char *input_str; /* Input string */
+ int input_len;
+ int mult; /* Multiplier */
char *result; /* Resulting string */
size_t result_len; /* Length of the resulting string */
- if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &input_str, &mult) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", &input_str, &input_len, &mult) == FAILURE) {
+ return;
}
-
- /* Make sure we're dealing with proper types */
- convert_to_string_ex(input_str);
- convert_to_long_ex(mult);
-
- if (Z_LVAL_PP(mult) < 0) {
+
+ if (mult < 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Second argument has to be greater than or equal to 0");
return;
}
/* Don't waste our time if it's empty */
- if (Z_STRLEN_PP(input_str) == 0)
- RETURN_STRINGL("", 0, 1);
-
/* ... or if the multiplier is zero */
- if (Z_LVAL_PP(mult) == 0)
- RETURN_STRINGL("", 0, 1);
-
+ if (input_len == 0 || mult == 0)
+ RETURN_EMPTY_STRING();
+
/* Initialize the result string */
- result_len = Z_STRLEN_PP(input_str) * Z_LVAL_PP(mult);
- result = (char *)safe_emalloc(Z_STRLEN_PP(input_str), Z_LVAL_PP(mult), 1);
+ result_len = input_len * mult;
+ result = (char *)safe_emalloc(input_len, mult, 1);
/* Heavy optimization for situations where input string is 1 byte long */
- if (Z_STRLEN_PP(input_str) == 1) {
- memset(result, *(Z_STRVAL_PP(input_str)), Z_LVAL_PP(mult));
+ if (input_len == 1) {
+ memset(result, *(input_str), mult);
} else {
char *s, *e, *ee;
int l=0;
- memcpy(result, Z_STRVAL_PP(input_str), Z_STRLEN_PP(input_str));
+ memcpy(result, input_str, input_len);
s = result;
- e = result + Z_STRLEN_PP(input_str);
+ e = result + input_len;
ee = result + result_len;
while (e<ee) {
@@ -4554,33 +4507,24 @@ PHP_FUNCTION(str_repeat)
Returns info about what characters are used in input */
PHP_FUNCTION(count_chars)
{
- zval **input, **mode;
+ char *input;
int chars[256];
- int ac=ZEND_NUM_ARGS();
int mymode=0;
unsigned char *buf;
int len, inx;
char retstr[256];
int retlen=0;
- if (ac < 1 || ac > 2 || zend_get_parameters_ex(ac, &input, &mode) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &input, &len, &mymode) == FAILURE) {
+ return;
}
-
- convert_to_string_ex(input);
- if (ac == 2) {
- convert_to_long_ex(mode);
- mymode = Z_LVAL_PP(mode);
-
- if (mymode < 0 || mymode > 4) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown mode");
- RETURN_FALSE;
- }
+ if (mymode < 0 || mymode > 4) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown mode");
+ RETURN_FALSE;
}
-
- len = Z_STRLEN_PP(input);
- buf = (unsigned char *) Z_STRVAL_PP(input);
+
+ buf = (unsigned char *) input;
memset((void*) chars, 0, sizeof(chars));
while (len > 0) {
@@ -4631,17 +4575,15 @@ PHP_FUNCTION(count_chars)
*/
static void php_strnatcmp(INTERNAL_FUNCTION_PARAMETERS, int fold_case)
{
- zval **s1, **s2;
+ char *s1, *s2;
+ int s1_len, s2_len;
- if (ZEND_NUM_ARGS()!=2 || zend_get_parameters_ex(2, &s1, &s2) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &s1, &s1_len, &s2, &s2_len) == FAILURE) {
+ return;
}
- convert_to_string_ex(s1);
- convert_to_string_ex(s2);
-
- RETURN_LONG(strnatcmp_ex(Z_STRVAL_PP(s1), Z_STRLEN_PP(s1),
- Z_STRVAL_PP(s2), Z_STRLEN_PP(s2),
+ RETURN_LONG(strnatcmp_ex(s1, s1_len,
+ s2, s2_len,
fold_case));
}
/* }}} */
@@ -4752,63 +4694,60 @@ PHP_FUNCTION(strnatcasecmp)
Returns the number of times a substring occurs in the string */
PHP_FUNCTION(substr_count)
{
- zval **haystack, **needle, **offset, **length;
+ char *haystack, *needle;
+ int offset = 0;
+ int length;
int ac = ZEND_NUM_ARGS();
int count = 0;
+ int haystack_len, needle_len;
char *p, *endp, cmp;
- if (ac < 2 || ac > 4 || zend_get_parameters_ex(ac, &haystack, &needle, &offset, &length) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ll", &haystack, &haystack_len, &needle, &needle_len, &offset, &length) == FAILURE) {
+ return;
}
- convert_to_string_ex(haystack);
- convert_to_string_ex(needle);
-
- if (Z_STRLEN_PP(needle) == 0) {
+ if (needle_len == 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty substring");
RETURN_FALSE;
}
- p = Z_STRVAL_PP(haystack);
- endp = p + Z_STRLEN_PP(haystack);
-
- if (ac > 2) {
- convert_to_long_ex(offset);
- if (Z_LVAL_PP(offset) < 0) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset should be greater than or equal to 0");
- RETURN_FALSE;
- }
+ p = haystack;
+ endp = p + haystack_len;
- if (Z_LVAL_PP(offset) > Z_STRLEN_PP(haystack)) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset value %ld exceeds string length", Z_LVAL_PP(offset));
+ if (offset < 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset should be greater than or equal to 0");
+ RETURN_FALSE;
+ }
+
+ if (offset > haystack_len) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset value %ld exceeds string length", offset);
+ RETURN_FALSE;
+ }
+ p += offset;
+
+ if (ac == 4) {
+
+ if (length <= 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Length should be greater than 0");
RETURN_FALSE;
}
- p += Z_LVAL_PP(offset);
-
- if (ac == 4) {
- convert_to_long_ex(length);
- if (Z_LVAL_PP(length) <= 0) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Length should be greater than 0");
- RETURN_FALSE;
- }
- if (Z_LVAL_PP(length) > (Z_STRLEN_PP(haystack) - Z_LVAL_PP(offset))) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Length value %ld exceeds string length", Z_LVAL_PP(length));
- RETURN_FALSE;
- }
- endp = p + Z_LVAL_PP(length);
+ if (length > (haystack_len - offset)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Length value %ld exceeds string length", length);
+ RETURN_FALSE;
}
+ endp = p + length;
}
- if (Z_STRLEN_PP(needle) == 1) {
- cmp = Z_STRVAL_PP(needle)[0];
+ if (needle_len == 1) {
+ cmp = needle[0];
while ((p = memchr(p, cmp, endp - p))) {
count++;
p++;
}
} else {
- while ((p = php_memnstr(p, Z_STRVAL_PP(needle), Z_STRLEN_PP(needle), endp))) {
- p += Z_STRLEN_PP(needle);
+ while ((p = php_memnstr(p, needle, needle_len, endp))) {
+ p += needle_len;
count++;
}
}
@@ -4822,10 +4761,9 @@ PHP_FUNCTION(substr_count)
PHP_FUNCTION(str_pad)
{
/* Input arguments */
- zval **input, /* Input string */
- **pad_length, /* Length to pad to */
- **pad_string, /* Padding string */
- **pad_type; /* Padding type (left/right/both) */
+ char *input; /* Input string */
+ int input_len;
+ int pad_length; /* Length to pad to */
/* Helper variables */
int num_pad_chars; /* Number of padding characters (total - input size) */
@@ -4836,45 +4774,30 @@ PHP_FUNCTION(str_pad)
int pad_type_val = STR_PAD_RIGHT; /* The padding type value */
int i, left_pad=0, right_pad=0;
-
- if (ZEND_NUM_ARGS() < 2 || ZEND_NUM_ARGS() > 4 ||
- zend_get_parameters_ex(ZEND_NUM_ARGS(), &input, &pad_length, &pad_string, &pad_type) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl|sl", &input, &input_len, &pad_length,
+ &pad_str_val, &pad_str_len, &pad_type_val) == FAILURE) {
+ return;
}
- /* Perform initial conversion to expected data types. */
- convert_to_string_ex(input);
- convert_to_long_ex(pad_length);
-
- num_pad_chars = Z_LVAL_PP(pad_length) - Z_STRLEN_PP(input);
+ num_pad_chars = pad_length - input_len;
/* If resulting string turns out to be shorter than input string,
we simply copy the input and return. */
- if (Z_LVAL_PP(pad_length) < 0 || num_pad_chars < 0) {
- RETURN_ZVAL(*input, 1, 0);
+ if (pad_length < 0 || num_pad_chars < 0) {
+ RETURN_STRINGL(input, input_len, 1);
}
- /* Setup the padding string values if specified. */
- if (ZEND_NUM_ARGS() > 2) {
- convert_to_string_ex(pad_string);
- if (Z_STRLEN_PP(pad_string) == 0) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Padding string cannot be empty");
- return;
- }
- pad_str_val = Z_STRVAL_PP(pad_string);
- pad_str_len = Z_STRLEN_PP(pad_string);
-
- if (ZEND_NUM_ARGS() > 3) {
- convert_to_long_ex(pad_type);
- pad_type_val = Z_LVAL_PP(pad_type);
- if (pad_type_val < STR_PAD_LEFT || pad_type_val > STR_PAD_BOTH) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Padding type has to be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH");
- return;
- }
- }
+ if (pad_str_len == 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Padding string cannot be empty");
+ return;
+ }
+
+ if (pad_type_val < STR_PAD_LEFT || pad_type_val > STR_PAD_BOTH) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Padding type has to be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH");
+ return;
}
- result = (char *)emalloc(Z_STRLEN_PP(input) + num_pad_chars + 1);
+ result = (char *)emalloc(input_len + num_pad_chars + 1);
/* We need to figure out the left/right padding lengths. */
switch (pad_type_val) {
@@ -4899,8 +4822,8 @@ PHP_FUNCTION(str_pad)
result[result_len++] = pad_str_val[i % pad_str_len];
/* Then we copy the input string. */
- memcpy(result + result_len, Z_STRVAL_PP(input), Z_STRLEN_PP(input));
- result_len += Z_STRLEN_PP(input);
+ memcpy(result + result_len, input, input_len);
+ result_len += input_len;
/* Finally, we pad on the right. */
for (i = 0; i < right_pad; i++)
@@ -4952,14 +4875,14 @@ static char rot13_to[] = "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM";
Perform the rot13 transform on a string */
PHP_FUNCTION(str_rot13)
{
- zval **arg;
+ char *arg;
+ int arglen;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg)) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arglen) == FAILURE) {
+ return;
}
- convert_to_string_ex(arg);
- RETVAL_ZVAL(*arg, 1, 0);
+ RETVAL_STRINGL(arg, arglen, 1);
php_strtr(Z_STRVAL_P(return_value), Z_STRLEN_P(return_value), rot13_from, rot13_to, 52);
}
@@ -4995,14 +4918,14 @@ static void php_string_shuffle(char *str, long len TSRMLS_DC) /* {{{ */
Shuffles string. One permutation of all possible is created */
PHP_FUNCTION(str_shuffle)
{
- zval **arg;
-
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg)) {
- WRONG_PARAM_COUNT;
+ char *arg;
+ int arglen;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arglen) == FAILURE) {
+ return;
}
-
- convert_to_string_ex(arg);
- RETVAL_ZVAL(*arg, 1, 0);
+
+ RETVAL_STRINGL(arg, arglen, 1);
if (Z_STRLEN_P(return_value) > 1) {
php_string_shuffle(Z_STRVAL_P(return_value), (long) Z_STRLEN_P(return_value) TSRMLS_CC);
}
diff --git a/ext/standard/tests/strings/addcslashes_001.phpt b/ext/standard/tests/strings/addcslashes_001.phpt
index ba45504c3a..74e0dbfe1a 100644
--- a/ext/standard/tests/strings/addcslashes_001.phpt
+++ b/ext/standard/tests/strings/addcslashes_001.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/addcslashes_004.phpt b/ext/standard/tests/strings/addcslashes_004.phpt
index 8f314fb557..db2b6f8858 100644
--- a/ext/standard/tests/strings/addcslashes_004.phpt
+++ b/ext/standard/tests/strings/addcslashes_004.phpt
@@ -19,12 +19,12 @@ echo "Done\n";
--EXPECTF--
*** Testing error conditions ***
-Warning: Wrong parameter count for addcslashes() in %s on line %d
+Warning: addcslashes() expects exactly 2 parameters, 0 given in %s on line %d
NULL
-Warning: Wrong parameter count for addcslashes() in %s on line %d
+Warning: addcslashes() expects exactly 2 parameters, 1 given in %s on line %d
NULL
-Warning: Wrong parameter count for addcslashes() in %s on line %d
+Warning: addcslashes() expects exactly 2 parameters, 3 given in %s on line %d
NULL
Done
diff --git a/ext/standard/tests/strings/addslashes_error.phpt b/ext/standard/tests/strings/addslashes_error.phpt
index b512716934..4ebd887856 100644
--- a/ext/standard/tests/strings/addslashes_error.phpt
+++ b/ext/standard/tests/strings/addslashes_error.phpt
@@ -33,12 +33,12 @@ echo "Done\n";
-- Testing addslashes() function with Zero arguments --
-Warning: Wrong parameter count for addslashes() in %s on line %d
+Warning: addslashes() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing addslashes() function with more than expected no. of arguments --
-Warning: Wrong parameter count for addslashes() in %s on line %d
+Warning: addslashes() expects exactly 1 parameter, 2 given in %s on line %d
NULL
string(15) ""hello"\"world""
Done
diff --git a/ext/standard/tests/strings/addslashes_variation1.phpt b/ext/standard/tests/strings/addslashes_variation1.phpt
index a86f86d058..4c98a6c098 100644
--- a/ext/standard/tests/strings/addslashes_variation1.phpt
+++ b/ext/standard/tests/strings/addslashes_variation1.phpt
@@ -125,24 +125,24 @@ string(7) "1.06E-9"
string(3) "0.5"
-- Iteration 10 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: addslashes() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 11 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: addslashes() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 12 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: addslashes() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 13 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: addslashes() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 14 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: addslashes() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 15 --
string(1) "1"
-- Iteration 16 --
@@ -162,7 +162,9 @@ string(0) ""
-- Iteration 23 --
string(7) "obj\'ct"
-- Iteration 24 --
-string(%d) "Resource id #%d"
+
+Warning: addslashes() expects parameter 1 to be string, resource given in %s on line %d
+NULL
-- Iteration 25 --
string(0) ""
-- Iteration 26 --
diff --git a/ext/standard/tests/strings/chr_ord.phpt b/ext/standard/tests/strings/chr_ord.phpt
index 8c91b4cba0..b5015a0108 100644
--- a/ext/standard/tests/strings/chr_ord.phpt
+++ b/ext/standard/tests/strings/chr_ord.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/nl2br_error.phpt b/ext/standard/tests/strings/nl2br_error.phpt
index c600dddda6..8aa2820d31 100644
--- a/ext/standard/tests/strings/nl2br_error.phpt
+++ b/ext/standard/tests/strings/nl2br_error.phpt
@@ -25,10 +25,10 @@ echo "Done";
*** Testing nl2br() : error conditions ***
-- Testing nl2br() function with Zero arguments --
-Warning: Wrong parameter count for nl2br() in %s on line %d
+Warning: nl2br() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing nl2br() function with more than expected no. of arguments --
-Warning: Wrong parameter count for nl2br() in %s on line %d
+Warning: nl2br() expects exactly 1 parameter, 2 given in %s on line %d
NULL
Done
diff --git a/ext/standard/tests/strings/nl2br_variation5.phpt b/ext/standard/tests/strings/nl2br_variation5.phpt
index 066d642cdc..beebe03fe2 100644
--- a/ext/standard/tests/strings/nl2br_variation5.phpt
+++ b/ext/standard/tests/strings/nl2br_variation5.phpt
@@ -109,24 +109,24 @@ string(7) "1.06E-9"
string(3) "0.5"
-- Iteration 10 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: nl2br() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 11 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: nl2br() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 12 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: nl2br() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 13 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: nl2br() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 14 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: nl2br() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 15 --
string(0) ""
-- Iteration 16 --
@@ -140,7 +140,9 @@ string(1) "1"
-- Iteration 20 --
string(0) ""
-- Iteration 21 --
-string(%d) "Resource id #%d"
+
+Warning: nl2br() expects parameter 1 to be string, resource given in %s on line %d
+NULL
-- Iteration 22 --
string(9) "My String"
-- Iteration 23 --
diff --git a/ext/standard/tests/strings/str_ireplace.phpt b/ext/standard/tests/strings/str_ireplace.phpt
index 4d4fee8f90..b127424dfe 100644
--- a/ext/standard/tests/strings/str_ireplace.phpt
+++ b/ext/standard/tests/strings/str_ireplace.phpt
@@ -48,13 +48,13 @@ var_dump($Data = str_ireplace("\n", "<br>", $Data));
echo "Done\n";
?>
--EXPECTF--
-Warning: Wrong parameter count for str_ireplace() in %s on line %d
+Warning: str_ireplace() expects at least 3 parameters, 0 given in %s on line %d
NULL
-Warning: Wrong parameter count for str_ireplace() in %s on line %d
+Warning: str_ireplace() expects at least 3 parameters, 1 given in %s on line %d
NULL
-Warning: Wrong parameter count for str_ireplace() in %s on line %d
+Warning: str_ireplace() expects at least 3 parameters, 2 given in %s on line %d
NULL
string(0) ""
string(8) "aaaaaaaT"
diff --git a/ext/standard/tests/strings/str_pad.phpt b/ext/standard/tests/strings/str_pad.phpt
index 5509d9d9e2..645d8ff385 100644
--- a/ext/standard/tests/strings/str_pad.phpt
+++ b/ext/standard/tests/strings/str_pad.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/str_repeat.phpt b/ext/standard/tests/strings/str_repeat.phpt
index 49d0ab0986..73c193b6d7 100644
--- a/ext/standard/tests/strings/str_repeat.phpt
+++ b/ext/standard/tests/strings/str_repeat.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/str_replace.phpt b/ext/standard/tests/strings/str_replace.phpt
index 2408c82f09..830378b9a1 100644
--- a/ext/standard/tests/strings/str_replace.phpt
+++ b/ext/standard/tests/strings/str_replace.phpt
@@ -940,18 +940,18 @@ string(5) "FOUND"
string(5) "FOUND"
*** Testing error conditions ***
-Warning: Wrong parameter count for str_replace() in %s on line %d
+Warning: str_replace() expects at least 3 parameters, 0 given in %s on line %d
NULL
-Warning: Wrong parameter count for str_replace() in %s on line %d
+Warning: str_replace() expects at least 3 parameters, 1 given in %s on line %d
NULL
-Warning: Wrong parameter count for str_replace() in %s on line %d
+Warning: str_replace() expects at least 3 parameters, 1 given in %s on line %d
NULL
-Warning: Wrong parameter count for str_replace() in %s on line %d
+Warning: str_replace() expects at least 3 parameters, 2 given in %s on line %d
NULL
-Warning: Wrong parameter count for str_replace() in %s on line %d
+Warning: str_replace() expects at most 4 parameters, 5 given in %s on line %d
NULL
Done
diff --git a/ext/standard/tests/strings/strip_tags_error.phpt b/ext/standard/tests/strings/strip_tags_error.phpt
index 2f159cd0cd..c45cbb115a 100644
--- a/ext/standard/tests/strings/strip_tags_error.phpt
+++ b/ext/standard/tests/strings/strip_tags_error.phpt
@@ -30,11 +30,11 @@ echo "Done";
-- Testing strip_tags() function with Zero arguments --
-Warning: Wrong parameter count for strip_tags() in %s on line %d
+Warning: strip_tags() expects at least 1 parameter, 0 given in %s on line %d
NULL
-- Testing strip_tags() function with more than expected no. of arguments --
-Warning: Wrong parameter count for strip_tags() in %s on line %d
+Warning: strip_tags() expects at most 2 parameters, 3 given in %s on line %d
NULL
Done
diff --git a/ext/standard/tests/strings/strip_tags_variation1.phpt b/ext/standard/tests/strings/strip_tags_variation1.phpt
index 9b34ef4509..2601a964b0 100644
--- a/ext/standard/tests/strings/strip_tags_variation1.phpt
+++ b/ext/standard/tests/strings/strip_tags_variation1.phpt
@@ -112,24 +112,24 @@ string(7) "1.06E-9"
string(3) "0.5"
-- Iteration 10 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strip_tags() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 11 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strip_tags() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 12 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strip_tags() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 13 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strip_tags() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 14 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strip_tags() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 15 --
string(0) ""
-- Iteration 16 --
@@ -153,5 +153,7 @@ string(0) ""
-- Iteration 25 --
string(0) ""
-- Iteration 26 --
-string(%d) "Resource id #%d"
+
+Warning: strip_tags() expects parameter 1 to be string, resource given in %s on line %d
+NULL
Done
diff --git a/ext/standard/tests/strings/strip_tags_variation3.phpt b/ext/standard/tests/strings/strip_tags_variation3.phpt
index 1065fc626e..813dd73ad8 100644
--- a/ext/standard/tests/strings/strip_tags_variation3.phpt
+++ b/ext/standard/tests/strings/strip_tags_variation3.phpt
@@ -112,34 +112,24 @@ string(7) "1.06E-9"
string(3) "0.5"
-- Iteration 10 --
-Notice: Array to string conversion in %s on line %d
-
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strip_tags() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 11 --
-Notice: Array to string conversion in %s on line %d
-
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strip_tags() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 12 --
-Notice: Array to string conversion in %s on line %d
-
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strip_tags() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 13 --
-Notice: Array to string conversion in %s on line %d
-
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strip_tags() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 14 --
-Notice: Array to string conversion in %s on line %d
-
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strip_tags() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 15 --
string(0) ""
-- Iteration 16 --
@@ -163,5 +153,7 @@ string(0) ""
-- Iteration 25 --
string(0) ""
-- Iteration 26 --
-string(%d) "Resource id #%d"
+
+Warning: strip_tags() expects parameter 1 to be string, resource given in %s on line %d
+NULL
Done
diff --git a/ext/standard/tests/strings/stripslashes_error.phpt b/ext/standard/tests/strings/stripslashes_error.phpt
index cef09fc2df..99d877fd69 100644
--- a/ext/standard/tests/strings/stripslashes_error.phpt
+++ b/ext/standard/tests/strings/stripslashes_error.phpt
@@ -32,12 +32,12 @@ echo "Done\n";
-- Testing stripslashes() function with Zero arguments --
-Warning: Wrong parameter count for stripslashes() in %s on line %d
+Warning: stripslashes() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing stripslashes() function with more than expected no. of arguments --
-Warning: Wrong parameter count for stripslashes() in %s on line %d
+Warning: stripslashes() expects exactly 1 parameter, 2 given in %s on line %d
NULL
string(18) "\"hello\"\"world\""
Done
diff --git a/ext/standard/tests/strings/stripslashes_variation1.phpt b/ext/standard/tests/strings/stripslashes_variation1.phpt
index 4d58fd7a05..ed56dce6ed 100644
--- a/ext/standard/tests/strings/stripslashes_variation1.phpt
+++ b/ext/standard/tests/strings/stripslashes_variation1.phpt
@@ -125,24 +125,24 @@ string(7) "1.06E-9"
string(3) "0.5"
-- Iteration 10 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: stripslashes() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 11 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: stripslashes() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 12 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: stripslashes() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 13 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: stripslashes() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 14 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: stripslashes() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 15 --
string(1) "1"
-- Iteration 16 --
@@ -162,7 +162,9 @@ string(0) ""
-- Iteration 23 --
string(6) "obj'ct"
-- Iteration 24 --
-string(%d) "Resource id #%d"
+
+Warning: stripslashes() expects parameter 1 to be string, resource given in %s on line %d
+NULL
-- Iteration 25 --
string(0) ""
-- Iteration 26 --
diff --git a/ext/standard/tests/strings/strrev_error.phpt b/ext/standard/tests/strings/strrev_error.phpt
index e1fd9f8248..ef64e80afd 100644
--- a/ext/standard/tests/strings/strrev_error.phpt
+++ b/ext/standard/tests/strings/strrev_error.phpt
@@ -18,10 +18,10 @@ echo "*** Done ***";
--EXPECTF--
*** Testing strrev() : error conditions ***
-- Testing strrev() function with Zero arguments --
-Warning: Wrong parameter count for strrev() in %s on line %d
+Warning: strrev() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing strrev() function with more than expected no. of arguments --
-Warning: Wrong parameter count for strrev() in %s on line %d
+Warning: strrev() expects exactly 1 parameter, 2 given in %s on line %d
NULL
*** Done ***
diff --git a/ext/standard/tests/strings/strrev_variation4.phpt b/ext/standard/tests/strings/strrev_variation4.phpt
index bf4a7fad9f..fa347cd2fd 100644
--- a/ext/standard/tests/strings/strrev_variation4.phpt
+++ b/ext/standard/tests/strings/strrev_variation4.phpt
@@ -119,28 +119,28 @@ string(3) "5.0"
-- Iterator 10 --
-Notice: Array to string conversion in %s on line %d
-string(5) "yarrA"
+Warning: strrev() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iterator 11 --
-Notice: Array to string conversion in %s on line %d
-string(5) "yarrA"
+Warning: strrev() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iterator 12 --
-Notice: Array to string conversion in %s on line %d
-string(5) "yarrA"
+Warning: strrev() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iterator 13 --
-Notice: Array to string conversion in %s on line %d
-string(5) "yarrA"
+Warning: strrev() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iterator 14 --
-Notice: Array to string conversion in %s on line %d
-string(5) "yarrA"
+Warning: strrev() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iterator 15 --
string(0) ""
@@ -170,7 +170,9 @@ string(0) ""
string(6) "tcejbo"
-- Iterator 24 --
-string(%d) "%d# di ecruoseR"
+
+Warning: strrev() expects parameter 1 to be string, resource given in %s on line %d
+NULL
-- Iterator 25 --
string(0) ""
diff --git a/ext/standard/tests/strings/strtr_error.phpt b/ext/standard/tests/strings/strtr_error.phpt
index 8466a92011..f34085fb4d 100644
--- a/ext/standard/tests/strings/strtr_error.phpt
+++ b/ext/standard/tests/strings/strtr_error.phpt
@@ -28,14 +28,14 @@ echo "Done";
*** Testing strtr() : error conditions ***
-- Testing strtr() function with Zero arguments --
-Warning: Wrong parameter count for strtr() in %s on line %d
+Warning: strtr() expects at least 2 parameters, 0 given in %s on line %d
NULL
-- Testing strtr() function with less than expected no. of arguments --
-Warning: Wrong parameter count for strtr() in %s on line %d
+Warning: strtr() expects at least 2 parameters, 1 given in %s on line %d
NULL
-- Testing strtr() function with more than expected no. of arguments --
-Warning: Wrong parameter count for strtr() in %s on line %d
+Warning: strtr() expects at most 3 parameters, 4 given in %s on line %d
NULL
Done
diff --git a/ext/standard/tests/strings/strtr_variation5.phpt b/ext/standard/tests/strings/strtr_variation5.phpt
index 7bd1704734..7c99e5b9ee 100644
--- a/ext/standard/tests/strings/strtr_variation5.phpt
+++ b/ext/standard/tests/strings/strtr_variation5.phpt
@@ -104,16 +104,16 @@ string(5) "-ma.5"
string(12) "ta5aaaaaaaaa"
-- Iteration 7 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Arr0y"
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 8 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Arr0y"
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 9 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Arr0y"
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 10 --
string(1) "t"
-- Iteration 11 --
@@ -129,7 +129,9 @@ string(0) ""
-- Iteration 16 --
string(13) "s02ple objec1"
-- Iteration 17 --
-string(%d) "Resource id #%d"
+
+Warning: strtr() expects parameter 1 to be string, resource given in %s on line %d
+NULL
-- Iteration 18 --
string(0) ""
-- Iteration 19 --
diff --git a/ext/standard/tests/strings/strtr_variation7.phpt b/ext/standard/tests/strings/strtr_variation7.phpt
index 04b742f312..cf7e777cee 100644
--- a/ext/standard/tests/strings/strtr_variation7.phpt
+++ b/ext/standard/tests/strings/strtr_variation7.phpt
@@ -111,18 +111,18 @@ string(6) "000105"
-- Iteration 7 --
-Notice: Array to string conversion in %s on line %d
-string(6) "ay2Arr"
+Warning: strtr() expects parameter 3 to be string, array given in %s on line %d
+NULL
-- Iteration 8 --
-Notice: Array to string conversion in %s on line %d
-string(6) "ay2Arr"
+Warning: strtr() expects parameter 3 to be string, array given in %s on line %d
+NULL
-- Iteration 9 --
-Notice: Array to string conversion in %s on line %d
-string(6) "ay2Arr"
+Warning: strtr() expects parameter 3 to be string, array given in %s on line %d
+NULL
-- Iteration 10 --
string(6) "0121tm"
@@ -146,7 +146,9 @@ string(6) "012atm"
string(6) "plesam"
-- Iteration 17 --
-string(6) "ourRes"
+
+Warning: strtr() expects parameter 3 to be string, resource given in %s on line %d
+NULL
-- Iteration 18 --
string(6) "012atm"
diff --git a/ext/standard/tests/strings/strtr_variation9.phpt b/ext/standard/tests/strings/strtr_variation9.phpt
index 0f5875c723..835b8b3fa7 100644
--- a/ext/standard/tests/strings/strtr_variation9.phpt
+++ b/ext/standard/tests/strings/strtr_variation9.phpt
@@ -123,63 +123,43 @@ bool(false)
-- Iteration 7 --
-Notice: Array to string conversion in %s on line %d
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-Notice: Array to string conversion in %s on line %d
-
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
-
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 8 --
-Notice: Array to string conversion in %s on line %d
-
-Notice: Array to string conversion in %s on line %d
-
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 9 --
-Notice: Array to string conversion in %s on line %d
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-Notice: Array to string conversion in %s on line %d
-
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
-
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 10 --
-Notice: Array to string conversion in %s on line %d
-
-Notice: Array to string conversion in %s on line %d
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
-
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 11 --
-Notice: Array to string conversion in %s on line %d
-
-Notice: Array to string conversion in %s on line %d
-
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: strtr() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 12 --
string(1) "1"
@@ -224,10 +204,12 @@ Warning: strtr(): The second argument is not an array in %s on line %d
bool(false)
-- Iteration 19 --
-string(%d) "Resource id #%d"
-Warning: strtr(): The second argument is not an array in %s on line %d
-bool(false)
+Warning: strtr() expects parameter 1 to be string, resource given in %s on line %d
+NULL
+
+Warning: strtr() expects parameter 1 to be string, resource given in %s on line %d
+NULL
-- Iteration 20 --
string(0) ""
diff --git a/ext/standard/tests/strings/substr.phpt b/ext/standard/tests/strings/substr.phpt
index c6366d2cee..5a8db16a54 100644
--- a/ext/standard/tests/strings/substr.phpt
+++ b/ext/standard/tests/strings/substr.phpt
Binary files differ
diff --git a/ext/standard/tests/strings/substr_count_error.phpt b/ext/standard/tests/strings/substr_count_error.phpt
index f8284c3a1d..6f7e7728b1 100644
--- a/ext/standard/tests/strings/substr_count_error.phpt
+++ b/ext/standard/tests/strings/substr_count_error.phpt
@@ -30,12 +30,12 @@ echo "Done\n";
--EXPECTF--
*** Testing error conditions ***
-Warning: Wrong parameter count for substr_count() in %s on line %d
+Warning: substr_count() expects at least 2 parameters, 0 given in %s on line %d
NULL
Notice: Undefined variable: str in %s on line %d
-Warning: Wrong parameter count for substr_count() in %s on line %d
+Warning: substr_count() expects at most 4 parameters, 5 given in %s on line %d
NULL
Notice: Undefined variable: str in %s on line %d
@@ -55,8 +55,8 @@ bool(false)
Notice: Undefined variable: str in %s on line %d
-Warning: substr_count(): Length should be greater than 0 in %s on line %d
-bool(false)
+Warning: substr_count() expects parameter 3 to be long, string given in %s on line %d
+NULL
Notice: Undefined variable: str in %s on line %d
diff --git a/ext/standard/tests/strings/substr_count_variation_001.phpt b/ext/standard/tests/strings/substr_count_variation_001.phpt
index cb6fc6bd3e..6277d4ddb5 100644
--- a/ext/standard/tests/strings/substr_count_variation_001.phpt
+++ b/ext/standard/tests/strings/substr_count_variation_001.phpt
@@ -57,13 +57,25 @@ echo "Done\n";
-- 3rd or 4th arg as string --
int(1)
int(1)
+
+Notice: A non well formed numeric value encountered in %s on line %d
int(2)
+
+Notice: A non well formed numeric value encountered in %s on line %d
+
+Notice: A non well formed numeric value encountered in %s on line %d
int(2)
-- 3rd or 4th arg as NULL --
-int(2)
-int(0)
-int(2)
+
+Warning: substr_count() expects parameter 3 to be long, string given %s on line %d
+NULL
+
+Warning: substr_count() expects parameter 3 to be long, string given %s on line %d
+NULL
+
+Warning: substr_count() expects parameter 3 to be long, string given %s on line %d
+NULL
int(0)
int(2)
diff --git a/ext/standard/tests/strings/ucwords_error.phpt b/ext/standard/tests/strings/ucwords_error.phpt
index cd6e7513c3..69a388ce84 100644
--- a/ext/standard/tests/strings/ucwords_error.phpt
+++ b/ext/standard/tests/strings/ucwords_error.phpt
@@ -31,12 +31,12 @@ echo "Done\n";
-- Testing ucwords() function with Zero arguments --
-Warning: Wrong parameter count for ucwords() in %s on line %d
+Warning: ucwords() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing ucwords() function with more than expected no. of arguments --
-Warning: Wrong parameter count for ucwords() in %s on line %d
+Warning: ucwords() expects exactly 1 parameter, 2 given in %s on line %d
NULL
string(10) "string_val"
Done
diff --git a/ext/standard/tests/strings/ucwords_variation1.phpt b/ext/standard/tests/strings/ucwords_variation1.phpt
index b7d61ab5da..22c29163c4 100644
--- a/ext/standard/tests/strings/ucwords_variation1.phpt
+++ b/ext/standard/tests/strings/ucwords_variation1.phpt
@@ -146,24 +146,24 @@ string(13) "1.07654321E-9"
string(3) "0.5"
-- Iteration 16 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: ucwords() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 17 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: ucwords() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 18 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: ucwords() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 19 --
-Notice: Array to string conversion in %s on line %d
-string(5) "Array"
+Warning: ucwords() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 20 --
-Notice: Array to string conversion in %s on line 101
-string(5) "Array"
+Warning: ucwords() expects parameter 1 to be string, array given in %s on line %d
+NULL
-- Iteration 21 --
string(1) "1"
-- Iteration 22 --
@@ -195,5 +195,7 @@ string(0) ""
-- Iteration 35 --
string(0) ""
-- Iteration 36 --
-string(%d) "Resource Id #%d"
-Done \ No newline at end of file
+
+Warning: ucwords() expects parameter 1 to be string, resource given in %s on line %d
+NULL
+Done