[PHP-users 34322] Re: preg_replaceでキャプチャ用サブパターンを無効に

NISHIMURA Yutaka forml @ aypio.net
2009年 2月 27日 (金) 23:00:16 JST


西村です。

Reply to <0ACF46EC-6E86-48A1-A831-B2106CB1F43F @ a-plus.to>
Carpenter <mlreader @ a-plus.to> wrote:
> preg_quote だと \ $ だけでなく、. < > などもエン 
> コードされるのです

そう言うことでしたら、置換後の文字列で数字の前に\が来るものを
エスケープしてやるとよいでしょう。

$a = array("\0","\1","\2","\3","\4","\5","\6","\7","\8","\9");
$b = array("\\0","\\1","\\2","\\3","\\4","\\5","\\6","\\7","\\8","\\9");
$c = str_replace($a,$b,"D:\ほげほげ\0000.jpg");

preg_replace( '/パス/', $c,  'このパスは' );

てな感じでどうでしょうか?

preg_replace_callbackを使えばもっとスマートに出来そうですが

-- 
NISHIMURA,Yutaka./西村ゆたか <forml @ aypio.net>




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