str_replace

(PHP 3 >= 3.0.6, PHP 4, PHP 5)

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

説明

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

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

PHP 4.0.5 以降、 str_replace() の全てのパラメータを 配列 ( array ) とすることが可能です。

警告

PHP 4.3.3 より前のバージョンには、 search replace の両方に配列を指定した場合に発生する、 空の search 添字をスキップする際に replace 配列上の内部ポインタを進めないという バグがあります。 このバグは PHP 4.3.3 で修正されており、 このバグに基づくスクリプトは、この関数をコールする前に空の検索値を 削除しておく必要があります。

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

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

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

例 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 );

// パラメータ count は PHP 5.0.0 で使用可能になりました
$str = str_replace ( "ll" , "" , "good golly miss molly!" , $count );
echo
$count ; // 2

// 置換の順番を指定します
$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 );

?>

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

注意: PHP 5.0.0 以降、一致して置換された対象文字列 ( search ) の数が、参照渡しされた count に返されます。 PHP 5.0.0 より前のバージョンでは、このパラメータは利用できません。

str_ireplace() substr_replace() preg_replace() および strtr() も参照ください。