- 締切済み
preg_replaceでの警告
PHP5.2.4を使用しています。 CakePHPというフレームワークの中の関数で、次のような Warning (2): preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 6 という警告がでるのですが、preg_replace関数の第4引数を指定してないからなのかな?と思い、 1という数字を指定してみたりしたのですが、同じような警告が出てしまいます・・・ たぶんバージョン間の違いだと思いますが、 この場合は、たとえば警告を出さないフラグを変更する以外に preg_replace関数をどのように記述すれば良いのでしょうか? function slug($string, $replacement = '_') { if(!class_exists('String')) { require_once LIBS . 'string.php'; } $map = array( '/a|a|a|a/' => 'a', '/e|e|e|?|e/' => 'e', '/i|i|i/' => 'i', '/o|o|o|o/' => 'o', '/u|u|?|u/' => 'u', '/c/' => 'c', '/n/' => 'n', '/a|a/' => 'ae', '/o/' => 'oe', '/u/' => 'ue', '/A/' => 'Ae', '/U/' => 'Ue', '/O/' => 'Oe', '/s/' => 'ss', '/[^\w\s]/' => ' ', '/\\s+/' => $replacement, String::insert('/^[:replacement]+|[:replacement]+$/', array('replacement' => preg_quote($replacement, '/'))) => '', ); /* print "string=$string<br>\n"; print_r(array_keys($map)); print_r(array_values($map)); */ $string = preg_replace(array_keys($map), array_values($map), $string); return $string; } string=test<br> Array ( [0] => /a|a|a|a/ [1] => /e|e|e|?|e/ [2] => /i|i|i/ [3] => /o|o|o|o/ [4] => /u|u|?|u/ [5] => /c/ [6] => /n/ [7] => /a|a/ [8] => /o/ [9] => /u/ [10] => /A/ [11] => /U/ [12] => /O/ [13] => /s/ [14] => /[^\w\s]/ [15] => /\s+/ [16] => /^[_]+|[_]+$/ ) Array ( [0] => a [1] => e [2] => i [3] => o [4] => u [5] => c [6] => n [7] => ae [8] => oe [9] => ue [10] => Ae [11] => Ue [12] => Oe [13] => ss [14] => [15] => _ [16] => )
- みんなの回答 (2)
- 専門家の回答
お礼
ご返答ありがとうございます。 EmEditorで表示してみたら、ちゃんとそれらしい表示がされました。 自分は普段、PHPエディタver1.78.1を使用していて、 これでUnicodeで取り込んでみたり試したのですが、 その通り表示されませんでした・・・ このPHPエディタでその通り表示させることは可能なのでしょうか? それと、cake_1.2.0.7296-rc2で他にもこのような表示バグ(動作に影響ある) がある個所はあるのでしょうか? この2つ(PHPエディタとCakePHP)について もしご存知でしたら教えてもらえないでしょうか?