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

Shima Shizuo r6 @ chubu.interq.or.jp
2007年 9月 28日 (金) 13:18:59 JST


こんにちは、嶋です。

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


>このようなジレンマを解消するにはどうすればいいのでしょうか。

●方法1
  ・"$"を一致させないような正規表現を使用する
  ・"$"を後でくっつける
  ・後方参照を「"」で囲う。
  
  $string = '$string = "hoge";';
  $string1 = preg_replace('#^\$(.*)$#e', 'nl2br("$"."\\1")', $string);
  echo $string1 . "\n"; // => $string = "hoge";

●方法2
  ・preg_replace_callbackを使用する
  ・callback関数はcreate_functionで定義すると楽

  $string = '$string = "hoge";';
  $new_func = create_function('$matches', 'return $matches[1];');
  $string2 = preg_replace_callback("#^(.*)$#", $new_func, $string);
  echo $string2 . "\n"; // => $string = "hoge";



# 簡単にするために、当初のコードから変更している箇所があります。
  ひょっとしたらそれが原因でなにか悪さしてるかも..


----
Shima Shizuo  r6 @ chubu.interq.or.jp



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