Bra*_*don 3 php regex camelcasing
我正在尝试在code.google.com上使用NameCase php类.当我运行它时,我得到了这个通知,我不明白为什么.
PHP注意:使用未定义的常量Mc - 在namecase.php中假设'Mc'(54):第1行的regexp代码
53 if( preg_match('/\bMac[A-Za-z]{2,}[^aciozj]\b/', $str) || preg_match('/\bMc/', $str) ) {
54 $str = preg_replace("/\b(Ma?c)([A-Za-z]+)/e", "$1.ucfirst('\\2')", $str);
55 // Now correct for "Mac" exceptions
56 $str = preg_replace('/\bMacEvicius/','Macevicius', $str); // Lithuanian
57 $str = preg_replace('/\bMacHado/', 'Machado', $str); // Portuguese
58 $str = preg_replace('/\bMacHar/', 'Machar', $str);
59 ...
Run Code Online (Sandbox Code Playgroud)
有没有什么可以做的纠正代码,所以它不会产生通知.
谢谢
您需要在替换时引用1美元,例如"'$1'.ucfirst('\\2')"或更好,使用preg_replace_callback.在PHP 5.3+中,您可以传递一个闭包,例如:
$str = preg_replace_callback(
"/\b(Ma?c)([A-Za-z]+)/",
function($m) { return $m[1] . ucfirst($m[2]); },
$str
);
Run Code Online (Sandbox Code Playgroud)