[PHP-users 32656] e 修飾子のジレンマ
yamada_coffee @ yahoo.co.jp
yamada_coffee @ yahoo.co.jp
2007年 9月 27日 (木) 21:06:06 JST
山田と申します。
preg_replace()でe修飾子を用いて文字列置換をしようとしたところ、
困った問題に突き当たりました。
preg_replace()でe修飾子を用いたときに、後方参照を「'」で囲むと、
後方参照の中の「"」や「\」がエスケープされた状態で表れてしまいます。
<?php
// Sample 1
$string = '<code><?php $string = "hoge"; ?></code>';
$string = preg_replace('#<code><\?php (.*?) \?></code>#e',
"highlight_string('<?php $1 ?>', TRUE)", $string);
echo $string;
?>
かといって後方参照を「"」で囲むと、今度は「$」で始まる部分を変数としてパ
ースしてしまいます。
<?php
// Sample 2
$string = '<code><?php $string = "hoge"; ?></code>';
$string = preg_replace('#<code><\?php (.*?) \?></code>#e',
'highlight_string("<?php $1 ?>", TRUE)', $string);
echo $string;
?>
このようなジレンマを解消するにはどうすればいいのでしょうか。
--------------------------------------
Easy + Joy + Powerful = Yahoo! Bookmarks x Toolbar
http://pr.mail.yahoo.co.jp/toolbar/
PHP-users メーリングリストの案内