2016-05-24 15 views
1

PHPのstr_replace関数を使用して複数の部分文字列を置き換えようとすると、置き換えられた文字列を無視する方法はありますか?PHPの複数の部分文字列を古いものに置き換えずに置き換えます

たとえば、次のコードブロックを実行すると、最初の置換から " strong >"の "o"が置き換えられます。

$str="Hello world."; 
$old=array("e","o"); 
$new=array("<strong>e</strong>","<strong>o</strong>"); 

echo str_replace($old,$new,$str); 

実際の出力:

// "H<str<strong>o</strong>ng>e</str<strong>o</strong>ng>ll<strong>o</strong> w<strong>o</strong>rld." 

予想される出力:

// "H<strong>e</strong>ll<strong>o</strong> w<strong>o</strong>rld." 

答えて

1

使用strtr()

PHPマニュアルから:

最長のキーが最初に試されます。部分文字列が置換されると、その新しい値は再び検索されません。

+0

おかげで、これはまさに私が探していたもの - 私はドキュメントでそれを逃した信じることができません! –

1

preg_replace機能を使用して代替ソリューション:

echo preg_replace("/(e|o)/i", "<strong>$1</strong>", $str); 
// H<strong>e</strong>ll<strong>o</strong> w<strong>o</strong>rld. 
関連する問題