[PHP-users 22024]Re: mb_ereg_replaceでパターンの特定回数マッチ
Matsuoka Toshimasa
matsuoka @ shanghai-q.co.jp
2004年 6月 6日 (日) 15:02:09 JST
別解?です。
[テストコード]
<?
$in = "%%1ぬるぽ%%1ぬるぽ%1地獄先生ぬ〜べ〜 > %1";
$replace = "ドガッ";
echo preg_replace('/(%%?1)/e', '("\1"=="%%1")?"%1":$replace', $in);
?>
[出力]
%1ぬるぽ%1ぬろぽドガッ地獄先生ぬ〜べ〜 > ドガッ
パフォーマンスが心配ですが...%1だけでなく、どうせ%2,%3,%4...と使うのでし
たら、評価置換を使う価値があるかもしれないですね。
[ちょっと良い関数?]
function evalvar($str, $var_array)
{
return preg_replace('/(%%?\d)/e', 'substr("\1",0,2)=="%%"?substr("\1",1,2):$var_array[substr("\1",1,1)]', $str);
}
$var_array[0]= "あ";
$var_array[1]= "こ";
$var_array[2]= "そ";
echo evalvar("%0のサイトの%0のスレは...%1%2%1%2...%%2", $var_array);
PHP-users メーリングリストの案内