[PHP-users 32684] Re: e 修飾子のジレンマ

yamada_coffee @ yahoo.co.jp yamada_coffee @ yahoo.co.jp
2007年 9月 29日 (土) 02:07:19 JST


goungounさん、嶋さん、ありがとうございました。

嶋さんの2つの方法は短いコードで書けますが、どのような場合にも使えると
いうわけではなさそうですね。
(preg_replace_callback()ならどのような場合にも使えるかなと思ったので
すが、http://ml.php.gr.jp/pipermail/php-users/2005-November/028020.html
によるとそうでもないようです。)

goungounさんの方法だと、コードは長くなりますが、どのような場合でも上手
くいきそうです。

嶋さん
> 「'」で囲うとエスケープするのって、余計なお節介って気がしますね。。

文字列を表すときに、変数やエスケープシーケンスを解釈する「"」と、ただ2
つの例外(「\'」と「\\」)を除いてを解釈しない「'」の2つの方法が用意さ
れているのは、よい言語仕様だと思います。

問題なのは、e修飾子を用いたときにpreg_replace()が後方参照の中の「'」、
「"」、「\」、NULL文字をエスケープするのに、「$」をエスケープしてくれ
ないことだと思います。「$」をエスケープしてくれれば、後方参照を「"」で
囲めばよいということになるのです。

山田

--------------------------------------
Easy + Joy + Powerful = Yahoo! Bookmarks x Toolbar
http://pr.mail.yahoo.co.jp/toolbar/



PHP-users メーリングリストの案内