preg_replaceのeオプション指定時のエスケープについて - PHPプロ!Q&A掲示板
キーワード / preg_replace   e   エスケープ  
いろいろ検索してみたのですが良くわからなかったので質問させてください。
preg_replaceでeオプションを指定したときの後方参照文字列についてなのですが、
マニュアルによると
"(ダブルクォート)、'(シングルクォート)、\(バックスラッシュ)、NULL文字
がエスケープされるとあります。
しかし、手元の環境(PHP 5.2.3 WinXP)だとダブルクォートしかエスケープされない
ような感じなのです。
仕事で開発に使っているLinuxサーバ(PHP 5.2.0-8+etch7)でも同様でした。
この仕様(ダブルクォートしかエスケープされない)で確定ならそれに合わせてコード
を弄ればいいのですが、マニュアルの記述を読むとほんとにそれでいいのか不安に
なっています。
なお、実験的に書いたコードと実行結果(XPのDOS窓)は以下の通りです。
- $str = $argv[1];
- print("$str\n");
- $str = preg_replace('/(.+)/e',"'\\1'",$str);
- print("$str\n");
- X:\test>c:\PHP\php preg_test.php ab\"c'def\g
- ab"c'def\g
- ab\"c'def\g
よろしくお願いします。
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。