Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP preg_replace backreference导致未定义常量通知_Php_Regex_Camelcasing - Fatal编程技术网

PHP preg_replace backreference导致未定义常量通知

PHP preg_replace backreference导致未定义常量通知,php,regex,camelcasing,Php,Regex,Camelcasing,我正在尝试在上使用NameCase作为php类。当我运行它时,我收到了这个通知,我不明白为什么 PHP注意:在中使用未定义的常量Mc-假定为“Mc” php(54):第1行的regexp代码 有什么方法可以纠正代码,使其不产生通知吗 谢谢您需要在替换中引用$1,例如,“'1'.ucfirst('\\2')”,或者更好地使用preg\u replace\u callback。在PHP 5.3+中,可以向其传递闭包,例如: $str = preg_replace_callback( "/\b

我正在尝试在上使用NameCase作为php类。当我运行它时,我收到了这个通知,我不明白为什么

PHP注意:在中使用未定义的常量Mc-假定为“Mc” php(54):第1行的regexp代码

有什么方法可以纠正代码,使其不产生通知吗


谢谢

您需要在替换中引用$1,例如,
“'1'.ucfirst('\\2')”
,或者更好地使用
preg\u replace\u callback
。在PHP 5.3+中,可以向其传递闭包,例如:

$str = preg_replace_callback(
    "/\b(Ma?c)([A-Za-z]+)/",
    function($m) { return $m[1] . ucfirst($m[2]); },
    $str
);

在5.3之前,您可以使用
create\u function()
传递闭包。也许不像5.3+闭包那样整洁,但仍然如此。测试了这两种解决方案,效果完美!谢谢你的快速回复。更正:我指的是匿名函数,当然不是闭包。
$str = preg_replace_callback(
    "/\b(Ma?c)([A-Za-z]+)/",
    function($m) { return $m[1] . ucfirst($m[2]); },
    $str
);