if (argc > 3) {
if (Z_TYPE_P(len) != IS_ARRAY) {
+ convert_to_long_ex(len);
l = zval_get_long(len);
}
} else {
(argc == 3 && Z_TYPE_P(from) == IS_ARRAY) ||
(argc == 4 && Z_TYPE_P(from) != Z_TYPE_P(len))
) {
- php_error_docref(NULL, E_WARNING, "'from' and 'len' should be of same type - numerical or array ");
+ php_error_docref(NULL, E_WARNING, "'start' and 'length' should be of same type - numerical or array ");
RETURN_STR_COPY(Z_STR_P(str));
}
if (argc == 4 && Z_TYPE_P(from) == IS_ARRAY) {
if (zend_hash_num_elements(Z_ARRVAL_P(from)) != zend_hash_num_elements(Z_ARRVAL_P(len))) {
- php_error_docref(NULL, E_WARNING, "'from' and 'len' should have the same number of elements");
+ php_error_docref(NULL, E_WARNING, "'start' and 'length' should have the same number of elements");
RETURN_STR_COPY(Z_STR_P(str));
}
}
}
RETURN_NEW_STR(result);
} else {
- php_error_docref(NULL, E_WARNING, "Functionality of 'from' and 'len' as arrays is not implemented");
+ php_error_docref(NULL, E_WARNING, "Functionality of 'start' and 'length' as arrays is not implemented");
RETURN_STR_COPY(Z_STR_P(str));
}
} else { /* str is array of strings */
--- /dev/null
+--TEST--
+Bug #71827 (substr_replace bug when length type is string )
+--FILE--
+<?php
+$line = str_repeat(' ',20); $value ='03'; $pos=0; $len='2';
+$line = substr_replace($line,$value,$pos,$len);
+echo "[$line]\n";
+?>
+--EXPECT--
+[03 ]
-- Testing substr_replace() function with start and length different types --
-Warning: substr_replace(): 'from' and 'len' should be of same type - numerical or array in %s on line %d
+Warning: substr_replace(): 'start' and 'length' should be of same type - numerical or array in %s on line %d
string(12) "Good morning"
-Warning: substr_replace(): 'from' and 'len' should be of same type - numerical or array in %s on line %d
+Warning: substr_replace(): 'start' and 'length' should be of same type - numerical or array in %s on line %d
string(12) "Good morning"
-- Testing substr_replace() function with start and length with a different number of elements --
-Warning: substr_replace(): 'from' and 'len' should have the same number of elements in %s on line %d
+Warning: substr_replace(): 'start' and 'length' should have the same number of elements in %s on line %d
string(12) "Good morning"
-- Testing substr_replace() function with start and length as arrays but string not--
-Warning: substr_replace(): Functionality of 'from' and 'len' as arrays is not implemented in %s on line %d
+Warning: substr_replace(): Functionality of 'start' and 'length' as arrays is not implemented in %s on line %d
string(12) "Good morning"
-===DONE===
\ No newline at end of file
+===DONE===