String 関数
PHP Manual

str_replace

(PHP 4, PHP 5)

str_replace検索文字列に一致したすべての文字列を置換する

説明

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

この関数は、subject の中の search を全て replace に置換します。

(正規表現のような) 技巧的な置換ルールを必要としない場合、 preg_replace() の代わりにこの関数を常用するべきです。

パラメータ

searchreplace が配列の場合、str_replace() は各配列から値をひとつ取り出し、 subject 上で検索と置換を行うために使用します。 replace の値が search よりも少ない場合、 置換される値の残りの部分には空の文字列が使用されます。 search が配列で replace が文字列の場合、この置換文字列が search の各値について使用されます。しかし、 逆は意味がありません。

search あるいは replace が配列の場合は、配列の最初の要素から順に処理されます。

search

探したい値。needle (針) と呼ばれることもあります。 配列を使えば、複数の値を指定することもできます。

replace

見つかった search を置き換える値。 配列を使えば、複数の値を指定することもできます。

subject

検索・置換の対象となる文字列あるいは配列。 haystack (干し草の山) と呼ばれることもあります。

subject が配列の場合、 subject の各エントリについて検索と置換が行われ、 返り値は同様に配列となります。

count

指定した場合は、マッチして置換が行われた箇所の個数がここに格納されます。

返り値

この関数は、置換後の文字列あるいは配列を返します。

変更履歴

バージョン 説明
5.0.0 count パラメータが追加されました。
4.3.3 この関数の挙動がかわりました。以前のバージョンにはバグがあり、 searchreplace の両方に配列を指定した場合に、 空の search 添字をスキップしても replace 配列上の内部ポインタが進みませんでした。 このバグは PHP 4.3.3 で修正されたので、このバグを前提としたスクリプトは、 この関数をコールする前に空の検索値を削除しておく必要があります。
4.0.5 ほとんどのパラメータに配列を渡せるようになりました。

例1 基本的な str_replace() の例

<?php
// <body text='black'> となります
$bodytag str_replace("%body%""black""<body text='%body%'>");

// Hll Wrld f PHP となります
$vowels = array("a""e""i""o""u""A""E""I""O""U");
$onlyconsonants str_replace($vowels"""Hello World of PHP");

// You should eat pizza, beer, and ice cream every day となります
$phrase  "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits""vegetables""fiber");
$yummy   = array("pizza""beer""ice cream");

$newphrase str_replace($healthy$yummy$phrase);

// 2 となります
$str str_replace("ll""""good golly miss molly!"$count);
echo 
$count;
?>

例2 str_replace() に関するちょっとした事実

<?php
// 置換の順番を指定します
$str     "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$order   = array("\r\n""\n""\r");
$replace '<br />';

// まず最初に \r\n を置換するので、二重に変換されることはありません
$newstr str_replace($order$replace$str);

// 出力は F となります。A が B に、そして B が C に、そして……
// 最終的に E が F に置換されるからです。置換は左から右へと順に行われます
$search  = array('A''B''C''D''E');
$replace = array('B''C''D''E''F');
$subject 'A';
echo 
str_replace($search$replace$subject);

// 出力は apearpearle pear となります
// 上で説明したのと同じ理由です
$letters = array('a''p');
$fruit   = array('apple''pear');
$text    'a p';
$output  str_replace($letters$fruit$text);
echo 
$output;
?>

注意

注意: この関数はバイナリデータに対応しています。

警告

置換の順番に関するメモ

str_replace() は左から右へと置換を行うので、 複数の置換を行うときには、前に追加された値を置換する可能性もあります。 このドキュメントのサンプルを参照ください。

注意:

この関数は大文字小文字を区別します。区別せずに置換するには str_ireplace() を使用します。

参考


String 関数
PHP Manual