関数・クラス解説

str_ireplace

version:PHP 5, PHP 7 (公式)

大文字小文字を区別しない str_replace()

フォーマット

mixed : str_ireplace ( 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_replaceを利用できます。

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

警告 置換の順番に関するメモ str_ireplace() は左から右へと置換を行うので、複数の置換を行うときには、前に追加された値を置換する可能性もあります。str_replace のドキュメントにある 2 番目の例が、これが及ぼす影響の実例です。

記述サンプル

//PHP 7.4.6で実行

//対象の文字列を指定
$str = "abcdefghijklmnABCDEFGHIJKLMN";

//実行
$result = str_ireplace("efg", "XXX", $str);

//結果表示
echo $result;
abcdXXXhijklmnABCDXXXHIJKLMN

/* ----------------------------- */

//対象の文字列と検索・置換文字列を指定
$str = "abcdefghijklmnABCDEFGHIJKLMN";
$search = ["abc", "hij", "lmn"];
$replace = ["XXX", "YYY", "ZZZ"];

//実行
$result = str_ireplace($search, $replace, $str);

//結果表示
echo $result;
XXXdefgYYYkZZZXXXDEFGYYYKZZZ

/* ----------------------------- */

//対象の文字列と検索・置換文字列を指定
$str = "abcdefghijklmnABCDEFGHIJKLMN";
$search = ["abc", "hij", "lmn"];
// $search よりも要素数が少ない場合
$replace = ["XXX", "YYY"];

//実行 足りない$replace は空文字で設定される
$result = str_ireplace($search, $replace, $str);

//結果表示
echo $result;
XXXdefgYYYkXXXDEFGYYYK

/* ----------------------------- */

//対象の文字列と検索・置換文字列を指定
$str = "abcdefghijklmnABCDEFGHIJKLMN";
$search = ["abc", "hij", "lmn"];
// 文字列で指定
$replace = "XXX";

//実行 すべてXXX で置き換えられる
$result = str_ireplace($search, $replace, $str);

//結果表示
echo $result;
XXXdefgXXXkXXXXXXDEFGXXXKXXX

/* ----------------------------- */

//対象の文字列と検索・置換文字列を指定
//検索対象に配列を指定
$str = ["abcdefghIJK", "EFGHijklmn"];
$search = "hij";
$replace = "XXX";

//実行
$result = str_ireplace($search, $replace, $str);

//結果表示 配列で返却される
print_r($result);
Array
(
    [0] => abcdefgXXXK
    [1] => EFGXXXklmn
)

/* ----------------------------- */

//マルチバイト文字を指定
$str = "あいうえおかきくけこアイウエオカキクケコ";
$search = "かきく";
$replace = "んんん";

//実行
$result = str_ireplace($search, $replace, $str);

//結果表示 大文字や小文字がないので該当するもののみ置換
echo $result;
あいうえおんんんけこアイウエオカキクケコアイウエオカキクケコ

参考リンク

preg_replace 正規表現検索および置換を行う
str_replace 検索対象の文字列中にあるすべての一致文字列を置換する
strtr 文字の変換あるいは部分文字列の置換を行う

タグ

アルファベット 大文字 小文字 replace 置換 String 文字列


公式リファレンス

書式

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

説明

この関数は、subject の中に現れるすべての search(大文字小文字を区別しない)を replace に置き換えた文字列あるいは配列を返します。 一般に、凝った置換ルールが必要ないのであれば、 preg_replace() で i 修正子を使用するかわりにこの関数を使用すべきです。

パラメータ

search および replace が配列の場合は、 str_ireplace() はそれぞれの配列から取り出した 値を使用して subject の置換を行います。 replace の要素数が search より少ない場合は、残りの要素は 空の文字列に置き換えられます。もし search が配列で replace が文字列だった場合は すべての search が同じ文字列に置き換えられます。 しかし、逆は意味がありません。 search あるいは replace が配列の場合は、配列の最初の要素から順に処理されます。

search
探したい値。needle (針) と呼ばれることもあります。 配列を使えば、複数の値を指定することもできます。
replace
見つかった search を置き換える値。 配列を使えば、複数の値を指定することもできます。
subject
検索・置換の対象となる文字列あるいは配列。 haystack (干し草の山) と呼ばれることもあります。 subject が配列の場合は、そのすべての要素に 対して検索と置換が行われ、返される結果も配列となります。
count
指定した場合は、マッチして置換が行われた箇所の個数がここに格納されます。

返値

置換した文字列あるいは配列を返します。

注意

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

置換の順番に関するメモ

str_ireplace() は左から右へと置換を行うので、 複数の置換を行うときには、前に追加された値を置換する可能性もあります。 str_replace() のドキュメントにある 2 番目の例が、これが及ぼす影響の実例です。

サンプル

例1 str_ireplace() の例

$bodytag = str_ireplace("%body%", "black", ""); echo $bodytag; // 

参考

  • str_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用の拡張モジュール