PHP preg_replace backreference导致未定义常量通知
我正在尝试在上使用NameCase作为php类。当我运行它时,我收到了这个通知,我不明白为什么 PHP注意:在中使用未定义的常量Mc-假定为“Mc” php(54):第1行的regexp代码 有什么方法可以纠正代码,使其不产生通知吗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
谢谢您需要在替换中引用$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
);