[PHP-users 22018]Re: mb_ereg_replaceでパターンの特定回数マッチ

Seto seto @ 1kg.jp
2004年 6月 6日 (日) 06:38:39 JST


 Setoです。
おはようございます。

>いしげ です.

>   $string の先頭に "%1" があった場合に
>正常に置換されないように思えます.
>それと,"%1%1" というパターンの際に,
>ひとつ目の %1 を置換した時点でポインタが先に行ってしまうので,
>ふたつ目の [^%] にマッチしないため %1 自体が置換されません.

なるほど。。。

>
>$string に確実に含まれない文字やパターンが存在する前提であれば,
>例えば $string に \xff が含まれないとすると
><?php
>echo str_replace("\xff", '%', str_replace('%1', $replace, str_replace('%%',
> "\xff", $string)));
>?>
>とすればよいのですが……

私もこれが楽だと思います。

>
>完全な汎用性を求めると,
><?php
>echo str_replace("%$replace", '%1', str_replace('%1', $replace, $string));
>?>

こちらは元データに "%" . $replace に相当するものが入っていると
期待する結果と違ってしまうと思います。
それなら、と考えると。。。。

%%1 で explode して 各配列データの %1 を $replace に置き換えかな。。。
# むちゃくちゃ力技ですね。。。

Junya Seto



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