関数・クラス解説

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;

参考

  • str_ireplace() - 大文字小文字を区別しない str_replace
  • substr_replace() - 文字列の一部を置換する
  • preg_replace() - 正規表現検索および置換を行う
  • strtr() - 文字の変換あるいは部分文字列の置換を行う
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール