【PHP8.x】str_ireplace関数の使い方

str_ireplace関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

str_ireplace関数は、文字列の中から特定の文字列を大文字小文字を区別せずに検索し、別の文字列に置換して返す関数です。

この関数は、与えられた文字列データに対して、指定した検索文字列と完全に一致するかどうかを判定する際に、アルファベットの大文字と小文字の違いを無視して処理を進める点が最大の特徴です。例えば、「PHP」と「php」を同じものとして扱いたい場合に非常に役立ちます。

第一引数には検索対象となる文字列、または複数の文字列をまとめた配列を指定します。第二引数には置換後の文字列、または置換後の複数の文字列をまとめた配列を指定してください。検索対象と置換後の文字列がそれぞれ配列で与えられた場合、配列の順序に従って1対1で置換処理が行われます。もし第二引数が単一の文字列で、第一引数が配列であった場合は、配列内のすべての検索文字列がその単一の文字列に置換されます。

第三引数には実際に置換が行われる対象の文字列、または文字列の配列を指定します。また、オプションとして第四引数に整数型の変数を渡すことで、実際に置換が行われた回数をその変数に格納することができます。

戻り値としては、すべての置換処理が完了した後の新しい文字列が返されます。もし第三引数に文字列の配列が与えられた場合は、処理後の文字列を要素に持つ配列が返されます。例えば、ユーザーが入力したテキストから特定の単語をすべて削除したり、表記ゆれを統一したりする際に非常に便利です。文字列操作において、大文字小文字の違いを気にせずに一括置換を行いたい場合に活用されます。

構文(syntax)

1<?php
2$search = 'world'; // 検索する文字列 (大文字小文字を区別しない)
3$replace = 'PHP';  // 置換する文字列
4$subject = 'Hello World! This is a world of programming.'; // 対象の文字列
5
6$result = str_ireplace($search, $replace, $subject);
7echo $result;
8?>

引数(parameters)

array|string $search, array|string $replace, array|string $subject, int &$count = null

  • array|string $search: 置換対象の文字列または文字列の配列を指定します。
  • array|string $replace: 置換後の文字列または文字列の配列を指定します。
  • array|string $subject: 検索および置換を行う対象の文字列または文字列の配列を指定します。
  • int &$count = null: 置換が行われた回数を格納する変数を指定します。省略可能です。

戻り値(return)

array|string|false

引数 $search$replace$subject の内容を大文字小文字を区別せずに置換した結果が返されます。置換が行われなかった場合は元の $subject が返され、エラーが発生した場合は false が返されます。

サンプルコード

PHP str_ireplace関数で大文字小文字を無視して置換する

1<?php
2
3/**
4 * str_ireplace() 関数の使用法を示します。
5 * この関数は、大文字・小文字を区別しない文字列置換を実行します。
6 *
7 * キーワード "bypassing str_ireplace php function" について:
8 * str_ireplace() は、大文字・小文字の様々なバリエーションを個別に指定する手間を「バイパス(回避)」し、
9 * 単一の検索文字列で全てをカバーできるため、非常に効率的です。
10 * 特に、ユーザー入力のサニタイズや、特定のキーワードをケースを気にせずに置換したい場合に役立ちます。
11 */
12function demonstrateStrIreplaceFunctionality(): void
13{
14    // --- 例1: 基本的な大文字・小文字を区別しない置換 ---
15    $originalString1 = "Hello World! This is a test string. WORLD!";
16    $search1         = "world"; // "world" を大文字・小文字を区別せずに検索
17    $replace1        = "PHP";
18    $replacementsCount1 = 0; // 実際に置換された回数を格納する変数
19
20    $resultString1 = str_ireplace($search1, $replace1, $originalString1, $replacementsCount1);
21
22    echo "--- 例1: 基本的な置換 ---" . PHP_EOL;
23    echo "元の文字列: " . $originalString1 . PHP_EOL;
24    echo "検索: '" . $search1 . "', 置換: '" . $replace1 . "'" . PHP_EOL;
25    echo "結果:     " . $resultString1 . PHP_EOL;
26    echo "置換回数: " . $replacementsCount1 . PHP_EOL . PHP_EOL;
27
28    // --- 例2: 配列を使って複数の単語を置換 ---
29    $originalString2 = "このウェブサイトにはbadwordとanotherbadなコンテンツが含まれています。BADWORDとANOTHERBADを削除してください!";
30    $search2         = ['badword', 'anotherbad']; // これらの単語を大文字・小文字を区別せずに検索
31    $replace2        = ['[編集済み]', 'クリーン'];
32    $replacementsCount2 = 0;
33
34    $resultString2 = str_ireplace($search2, $replace2, $originalString2, $replacementsCount2);
35
36    echo "--- 例2: 複数の単語の置換 ---" . PHP_EOL;
37    echo "元の文字列: " . $originalString2 . PHP_EOL;
38    echo "検索: ['" . implode("', '", $search2) . "'], 置換: ['" . implode("', '", $replace2) . "']" . PHP_EOL;
39    echo "結果:     " . $resultString2 . PHP_EOL;
40    echo "置換回数: " . $replacementsCount2 . PHP_EOL . PHP_EOL;
41
42    // --- 例3: 複数の対象文字列(文字列の配列)内で置換 ---
43    $subjectArray3 = [
44        "First line with a badword.",
45        "Second line has ANOTHERBAD.",
46        "Third line has No bad words."
47    ];
48    $search3         = "badword";
49    $replace3        = "goodword";
50    $replacementsCount3 = 0;
51
52    $resultArray3 = str_ireplace($search3, $replace3, $subjectArray3, $replacementsCount3);
53
54    echo "--- 例3: 対象文字列の配列内での置換 ---" . PHP_EOL;
55    echo "元の対象文字列:" . PHP_EOL;
56    foreach ($subjectArray3 as $line) {
57        echo "- " . $line . PHP_EOL;
58    }
59    echo "検索: '" . $search3 . "', 置換: '" . $replace3 . "'" . PHP_EOL;
60    echo "結果の対象文字列:" . PHP_EOL;
61    foreach ($resultArray3 as $line) {
62        echo "- " . $line . PHP_EOL;
63    }
64    echo "置換回数: " . $replacementsCount3 . PHP_EOL . PHP_EOL;
65
66    // --- 例4: マッチする文字列が見つからない場合 ---
67    $originalString4 = "この文字列には特定の単語がありません。";
68    $search4         = "存在しない単語";
69    $replace4        = "見つかりました";
70    $replacementsCount4 = 0;
71
72    $resultString4 = str_ireplace($search4, $replace4, $originalString4, $replacementsCount4);
73
74    echo "--- 例4: マッチする文字列が見つからない場合 ---" . PHP_EOL;
75    echo "元の文字列: " . $originalString4 . PHP_EOL;
76    echo "検索: '" . $search4 . "', 置換: '" . $replace4 . "'" . PHP_EOL;
77    echo "結果:     " . $resultString4 . PHP_EOL;
78    echo "置換回数: " . $replacementsCount4 . PHP_EOL;
79}
80
81// 関数を呼び出して例を実行します
82demonstrateStrIreplaceFunctionality();
83
84?>

PHPのstr_ireplace関数は、文字列の中から特定のパターンを大文字・小文字を区別せずに検索し、別の文字列に置換する機能を提供します。これにより、「World」や「WORLD」といった単語も「world」という単一の検索条件で処理できるため、大文字・小文字の様々なパターンを個別に記述する手間を省き、効率的なコード作成に役立ちます。

この関数は、検索する文字列または配列を $search、置換後の文字列または配列を $replace、置換対象となる文字列または配列を $subject として受け取ります。例えば、単語のフィルタリングやユーザー入力の整形などで活用できます。オプションの $count 引数に変数を渡すことで、実際に置換が行われた回数を取得できます。関数は、置換が成功した場合は置換後の文字列または文字列の配列を返します。置換対象が見つからなかった場合でも、元の文字列や配列がそのまま返されるため、処理の継続性を保てます。

str_ireplace関数は大文字・小文字を区別せずに文字列の置換を行います。これにより、同じ単語が様々なケースで記述されていても一度の指定でまとめて置換できるため、特にユーザー入力のサニタイズやコンテンツの統一に非常に有効です。$search$replace$subjectの引数は、単一の文字列だけでなく配列も指定でき、要素が順番に対応して処理されます。また、置換回数を取得する$count引数は参照渡しのため、呼び出し元で変数を用意して渡す必要があります。マッチする文字列が見つからなかった場合、関数は元の文字列または配列をそのまま返します。複雑なパターンマッチングを伴う置換が必要な場合は、正規表現を用いるpreg_replace関数を検討してください。この関数の目的はあくまで、大文字小文字の違いを気にしないシンプルな文字列の置き換えであることを理解してご使用ください。

PHP: str_ireplaceで大文字小文字を区別しない置換

1<?php
2
3/**
4 * このスクリプトは、str_replace と str_ireplace の違いを比較し、
5 * 大文字・小文字を区別する置換と区別しない置換の動作を示します。
6 *
7 * str_replace: 大文字・小文字を区別して検索し置換します。
8 * str_ireplace: 大文字・小文字を区別せずに検索し置換します。
9 */
10
11// 元の文字列を定義
12$originalString = "Hello World, hello PHP, programming is fun!";
13
14// 検索する文字列 (大文字・小文字が混在する可能性を考慮)
15$searchString = "hello";
16
17// 置換する文字列
18$replaceString = "Hi";
19
20echo "元の文字列: " . $originalString . "\n\n";
21
22// --- str_replace の使用例 (大文字・小文字を区別) ---
23// 'hello' は 'Hello' と区別されるため、2番目の 'hello' のみが置換される
24$resultReplace = str_replace($searchString, $replaceString, $originalString);
25echo "str_replace の結果 (大文字・小文字を区別): \n";
26echo "  検索対象: '" . $searchString . "'\n";
27echo "  置換後:   '" . $resultReplace . "'\n\n";
28
29// --- str_ireplace の使用例 (大文字・小文字を区別しない) ---
30// 'hello' は 'Hello' と同じと見なされるため、両方が置換される
31$resultIReplace = str_ireplace($searchString, $replaceString, $originalString);
32echo "str_ireplace の結果 (大文字・小文字を区別しない): \n";
33echo "  検索対象: '" . $searchString . "'\n";
34echo "  置換後:   '" . $resultIReplace . "'\n\n";
35
36// str_ireplace の第4引数 $count の使用例
37$count = 0; // 置換回数を格納する変数を初期化
38$resultWithCount = str_ireplace($searchString, $replaceString, $originalString, $count);
39echo "str_ireplace の結果 (置換回数をカウント): \n";
40echo "  置換後:   '" . $resultWithCount . "'\n";
41echo "  置換回数: " . $count . " 回\n";
42
43?>

PHP 8のstr_ireplace関数は、文字列の中から特定の文字列を検索し、別の文字列に置換する機能を提供します。この関数は、大文字・小文字を区別せずに検索・置換を行う点が最大の特徴です。例えば、「hello」を検索対象とした場合、「Hello」や「HELLO」といった表記も同様に置換されます。これは、大文字・小文字を区別して動作するstr_replace関数との明確な違いです。

引数には、まず$searchに検索したい文字列(または文字列の配列)を、次に$replaceに置換後の文字列(または文字列の配列)を、そして$subjectに置換対象となる元の文字列(または文字列の配列)を指定します。さらに、オプションとして$countという整数型の変数を参照渡しで指定すると、実際に置換が行われた回数を取得できます。

この関数は、置換が成功した場合は置換後の文字列または配列を返します。検索対象の文字列や置換文字列が見つからない、または何らかの理由で処理に失敗した場合にはfalseを返します。サンプルコードでは、str_ireplaceが元の文字列中の「Hello」と「hello」の両方を「Hi」に置換し、同時に$count引数によってその置換回数を正確にカウントする動作を示しており、柔軟な文字列処理を実現します。

str_ireplaceは、文字列中の特定の文字や単語を、大文字・小文字を区別せずに検索し置換する関数です。これに対しstr_replaceは大文字・小文字を区別して置換するため、意図しない置換漏れや誤置換がないよう、用途に応じた使い分けが重要です。

本関数の第4引数に整数型の変数を渡すと、置換が実行された回数をその変数で取得できます。この引数は参照渡しのため、変数を事前に0などで初期化しておくことを推奨します。関数は、置換後の結果である文字列または配列を返しますので、適切に受け取って利用してください。期待しない結果となる場合は、検索対象と置換対象が正しく指定されているか確認が必要です。

関連コンテンツ