[PHP-users 27485] Re: 正規表現について

鈴木孝征 takamasa @ thaliana.myhome.cx
2005年 11月 13日 (日) 18:07:22 JST


鈴木と申します。

> 正規表現のpreg_replace関数またはmb_ereg_replacを使用した場合、
> 置換処理時に、関数を通す事は不可能なのでしょうか?

たぶん無理でしょう。マニュアルにはそういったことができるような記述はあり
ませんから。

> ●テストコード
> $str = preg_replace("/\({3}(.+?)\){3}/s", "<a
> href=\"test.php?test=".urlencode($1)."\">$1</a>", $str);

preg_replaceではなくpreg_matchを使用して置換したい部分の前後も変数として
取得し、つなぎあわせるというのではどうでしょうか。

if(preg_match("/(.*\({3})(.+?)(\){3}.*)/", $str, $match)){
	$str = $match[1].urlencode($match[2]).$match[1];
}

ってなかんじで。

# 複数回マッチするときの処理はどうするのかっていうのはわかりません。

あと、無駄な引用は削ってから投稿してくださいね。


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