関数・クラス解説
str_replace
version:PHP 4, PHP 5, PHP 7 (公式)検索対象の文字列中にあるすべての一致文字列を置換する
フォーマット
mixed : str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
パラメータ
mixed $search (必須)
検索したい値を文字列で指定。配列で複数の値も検索できます。
mixed $replace (必須)
検索結果をどのように置き換えるかを文字列で指定。配列で複数の値も検索できます。
mixed $subject (必須)
ここで指定した文字列の中で検索・置換が行われる。配列で指定することも可能。配列で指定した場合は、すべての要素に対して検索と置換が行われる。またその場合は結果も配列で返却されます。
int &$count
置換が行われた箇所数が、参照で渡した変数へ格納されます。
返値 mixed
置換後の文字列を返します。$subject に配列を渡した場合は配列で返却されます。
解説
subject の中に現れるすべてのsearchを、replace に置き換えた文字列を返却します。$subject が配列だった場合は配列で返却されます。
search と replace を配列で指定した場合、それぞれの同要素数で検索置換されます(例 search[2] で検索されたものは replace[2] で置換される)。search の要素数に対してreplace の要素数が足りない場合は、足りない部分は空の文字列で置き換えられます。
search が配列、replace が文字列のパターンでは、search のすべてが同じ文字列で置換されます。この逆を指定した場合はエラーとなります。search や replace が配列の場合、配列の最初の要素から順に処理されます。
この関数はアルファベットの大文字と小文字は区別されますが、区別したくない場合はstr_ireplaceを利用できます。
注意: この関数はバイナリデータに対応しています。警告 置換の順番に関するメモ str_replace() は左から右へと置換を行うので、 複数の置換を行うときには、前に追加された値を置換する可能性もあります。 このドキュメントのサンプルを参照ください。
注意: この関数は大文字小文字を区別します。区別せずに置換するには str_ireplace() を使用します。
記述サンプル
//PHP 7.4.6で実行
//対象の文字列を指定
$str = "abcdefghijklmnABCDEFGHIJKLMN";
//実行
$result = str_replace("efg", "XXX", $str);
//結果表示
echo $result;
abcdXXXhijklmnABCDEFGHIJKLMN
/* ----------------------------- */
//対象の文字列と検索・置換文字列を指定
$str = "abcdefghijklmnABCDEFGHIJKLMN";
$search = ["abc", "hij", "lmn"];
$replace = ["XXX", "YYY", "ZZZ"];
//実行
$result = str_replace($search, $replace, $str);
//結果表示
echo $result;
XXXdefgYYYkZZZABCDEFGHIJKLMN
/* ----------------------------- */
//対象の文字列と検索・置換文字列を指定
$str = "abcdefghijklmnABCDEFGHIJKLMN";
$search = ["abc", "hij", "lmn"];
// $search よりも要素数が少ない場合
$replace = ["XXX", "YYY"];
//実行 足りない$replace は空文字で設定される
$result = str_replace($search, $replace, $str);
//結果表示
echo $result;
XXXdefgYYYkABCDEFGHIJKLMN
/* ----------------------------- */
//対象の文字列と検索・置換文字列を指定
$str = "abcdefghijklmnABCDEFGHIJKLMN";
$search = ["abc", "hij", "lmn"];
// 文字列で指定
$replace = "XXX";
//実行 すべてXXX で置き換えられる
$result = str_replace($search, $replace, $str);
//結果表示
echo $result;
XXXdefgXXXkXXXABCDEFGHIJKLMN
/* ----------------------------- */
//対象の文字列と検索・置換文字列を指定
//検索対象に配列を指定
$str = ["abcdefghIJK", "EFGHijklmn"];
$search = "hij";
$replace = "XXX";
//実行
$result = str_replace($search, $replace, $str);
//結果表示 配列で返却される
print_r($result);
Array
(
[0] => abcdefghIJK
[1] => EFGHijklmn
)
/* ----------------------------- */
//マルチバイト文字を指定
$str = "あいうえおかきくけこアイウエオカキクケコ";
$search = "かきく";
$replace = "んんん";
//実行
$result = str_replace($search, $replace, $str);
//結果表示 大文字や小文字がないので該当するもののみ置換
echo $result;
あいうえおんんんけこアイウエオカキクケコ
参考リンク
・preg_replace 正規表現検索および置換を行う・str_ireplace 大文字小文字を区別しない str_replace()
・strtr 文字の変換あるいは部分文字列の置換を行う
・substr_replace 文字列の一部を置換する
タグ
置換 検索 String 文字列
公式リファレンス
書式
str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) : mixed
説明
この関数は、subject の中の search を全て replace に置換します。
(正規表現のような) 技巧的な置換ルールを必要としない場合、 preg_replace() の代わりにこの関数を使うべきです。
パラメータ
search と replace が配列の場合、str_replace() は各配列から値をひとつ取り出し、 subject 上で検索と置換を行うために使用します。 replace の値が search よりも少ない場合、 置換される値の残りの部分には空の文字列が使用されます。 search が配列で replace が文字列の場合、この置換文字列が search の各値について使用されます。しかし、 逆は意味がありません。 search あるいは replace が配列の場合は、配列の最初の要素から順に処理されます。
- search
- 探したい値。needle (針) と呼ばれることもあります。 配列を使えば、複数の値を指定することもできます。
- replace
- 見つかった search を置き換える値。 配列を使えば、複数の値を指定することもできます。
- subject
- 検索・置換の対象となる文字列あるいは配列。 haystack (干し草の山) と呼ばれることもあります。 subject が配列の場合、 subject の各エントリについて検索と置換が行われ、 返り値は同様に配列となります。
- count
- 指定した場合は、マッチして置換が行われた箇所の個数がここに格納されます。
返値
この関数は、置換後の文字列あるいは配列を返します。
注意
注意: この関数はバイナリデータに対応しています。警告
置換の順番に関するメモ
str_replace() は左から右へと置換を行うので、 複数の置換を行うときには、前に追加された値を置換する可能性もあります。 このドキュメントのサンプルを参照ください。注意: この関数は大文字小文字を区別します。区別せずに置換するには str_ireplace() を使用します。
サンプル
例1 基本的な str_replace() の例
// となります
$bodytag = str_replace("%body%", "black", "");
// 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() に関するちょっとした事実
// 置換の順番を指定します
$str = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$order = array("\r\n", "\n", "\r");
$replace = '
';
// まず最初に \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;
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール