}
} else {
if (Z_TYPE_P(regex) != IS_ARRAY) {
- php_error_docref(NULL, E_WARNING, "Parameter mismatch, pattern is a string while replacement is an array");
- RETURN_FALSE;
+ zend_type_error("Parameter mismatch, pattern is a string while replacement is an array");
+ return;
}
}
* @param string|array $regex
* @param string|array $replace
* @param string|array $subject
- * @return string|array|null|false
+ * @return string|array|null
*/
function preg_replace($regex, $replace, $subject, int $limit = -1, &$count = null) {}
* @param string|array $regex
* @param string|array $replace
* @param string|array $subject
- * @return string|array|null|false
+ * @return string|array|null
*/
function preg_filter($regex, $replace, $subject, int $limit = -1, &$count = null) {}
--TEST--
Bug #21732 (preg_replace() segfaults with invalid parameters)
---INI--
-error_reporting=0
--FILE--
<?php
class foo {
}
}
-var_dump(preg_replace('', array(), ''));
+try {
+ var_dump(preg_replace('', array(), ''));
+} catch (TypeError $e) {
+ echo $e->getMessage(), "\n";
+}
var_dump(preg_replace_callback("/(ab)(cd)(e)/", array(new foo(), "cb"), 'abcde'));
?>
--EXPECT--
-bool(false)
+Parameter mismatch, pattern is a string while replacement is an array
array(4) {
[0]=>
string(5) "abcde"
--FILE--
<?php
-var_dump(preg_replace('', array(), ''));
-
var_dump(preg_replace(array('/\da(.)/ui', '@..@'), '$1', '12Abc'));
var_dump(preg_replace(array('/\da(.)/ui', '@(.)@'), '$1', array('x','a2aA', '1av2Ab')));
echo "==done==\n";
?>
---EXPECTF--
-Warning: preg_replace(): Parameter mismatch, pattern is a string while replacement is an array in %spreg_replace2.php on line 3
-bool(false)
+--EXPECT--
string(1) "c"
array(3) {
[0]=>
$subject = 'test';
foreach($replace as $value) {
print "\nArg value is: $value\n";
- var_dump(preg_replace($regex, $value, $subject));
+ try {
+ var_dump(preg_replace($regex, $value, $subject));
+ } catch (TypeError $e) {
+ echo $e->getMessage(), "\n";
+ }
}
$value = new stdclass(); //Object
try {
string(64) "this is a stringthis is a stringthis is a stringthis is a string"
Arg value is: Array
-
-Warning: preg_replace(): Parameter mismatch, pattern is a string while replacement is an array in %spreg_replace_error2.php on line %d
-bool(false)
+Parameter mismatch, pattern is a string while replacement is an array
Object of class stdClass could not be converted to string
Done