2010年4月13日

[PHP-users 35104] Re:str_replaceの使い方に関して

こんにちは。石田と申します。

2010年4月11日17:46 mao <mao@xxxxx>:
> お世話になります。MAOです。
>
> 初歩的な質問ですみません。
>
> $search = array('A', 'B', 'C', 'D', 'E');

> $replace = array('B', 'C', 'D', 'E', 'F');
> $subject = 'ABCDE';
> echo str_replace($search, $replace, $subject);
>
> としたばあい、
> FFFFF
> となると思うのですが、
> これを、BCDEFの結果を得たい場合は、
> どうすればよいのでしょうか?
>
> preg_replace_callbackを使えばよいのかとおもい、
>
> $search = array('A', 'B', 'C', 'D', 'E');
> $replace = array('B', 'C', 'D', 'E', 'F');
> $subject = 'ABCDE';
> echo preg_replace_callback("/[".join("",$search)."]/",create_function(
> '$matches',
> 'Global $search,$replace;return str_replace($search, $replace, $matches[0]);'
> ),
> $subject
> );
>
> なども試してみましたが、結果は同じでした。

preg_replaceでもいいのであれば、str_replaceを使わずに

$search = array('A', 'B', 'C', 'D', 'E');
$replace = array('B', 'C', 'D', 'E', 'F');
$subject = 'ABCDE';
echo preg_replace_callback("/[".join("",$search)."]/",create_function(
'$matches',
'Global $search,$replace; $tbl = array_combine($search, $replace);
return $tbl[$matches[0]];'
),
$subject
);

でどうでしょうか。

>
> よろしくお願いいたします。
>
> --
> MAO
> mao@xxxxx
> _______________________________________________
> PHP-users mailing list PHP-users@xxxxx
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
>
>

--
ISHIDA Akio <iakio@xxxxx/ishida@xxxxx>
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年4月13日 13:17
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/95046
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。