3

Code.google.com で NameCase a php クラスを使用しようとしています。実行すると、この通知が表示されますが、その理由がわかりません。

PHP 通知: 未定義の定数 Mc の使用 - namecase.php(54) で 'Mc' を想定: 1 行目の正規表現コード

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     ...

通知が表示されないようにコードを修正するためにできることはありますか。

ありがとう

4

1 に答える 1

7

代わりに $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
);
于 2011-08-18T00:34:20.277 に答える