Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】str_replace()関数の使い方

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

作成日: 更新日:

基本的な使い方

str_replace関数は、指定された文字列の中で特定の文字列を探し、別の文字列に置き換える処理を実行する関数です。この関数は、テキストデータの中から不要な部分を削除したり、特定のキーワードを一括で修正したり、フォーマットを整えたりする際に非常に役立ちます。例えば、ウェブサイトのコンテンツの更新や、ユーザーからの入力データの加工など、PHPプログラミングにおける文字列操作の基本的ながらも強力なツールとして幅広く利用されています。

基本的な使い方としては、第一引数に「探す文字列」、第二引数に「置き換える文字列」、第三引数に「処理対象の文字列」を指定します。これらの引数には単一の文字列だけでなく、文字列の配列を渡すことも可能です。配列を渡した場合、str_replace関数は配列の要素を1対1で対応させ、複数の置換処理を一度に効率良く実行します。

この関数は大文字と小文字を区別して置換を行います。そのため、大文字・小文字を区別しない置換を行いたい場合は、関連するstr_ireplace関数をご利用ください。また、オプションとして第四引数に整数型の変数を指定すると、置換が実際に行われた回数をその変数に格納することができます。これにより、置換の実行結果を数値で把握できます。str_replace関数は、日本語などのマルチバイト文字を含む文字列であっても安全かつ正確に置換処理を実行できます。

構文(syntax)

1<?php
2
3$text = "PHP is a popular scripting language. PHP is widely used.";
4$search = "PHP";
5$replace = "Python";
6$new_text = str_replace($search, $replace, $text);
7
8echo $new_text;
9
10?>

引数(parameters)

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

PHP:

  • array|string $search: 置換対象の文字列または文字列の配列
  • array|string $replace: 置換後の文字列または文字列の配列
  • array|string $subject: 検索および置換対象の文字列または文字列の配列
  • int &$count = null: 置換が発生した回数。省略可能

戻り値(return)

array|string

指定された文字列を検索し、別の文字列に置き換えた結果の文字列、または置換が1回も行われなかった場合は元の文字列を返します。置換の回数も配列として返される場合があります。

サンプルコード

PHP str_replaceで改行コードを<br>に置換する

1<?php
2
3/**
4 * 指定された文字列内の一般的な改行コード (CRLF, LF) をHTMLの<br>タグに置換します。
5 * str_replace関数を使って、複数種類の改行コードを一度に処理する方法を示します。
6 *
7 * @param string $text 置換対象の元の文字列。
8 * @return string 改行コードがHTMLの<br>タグに置換された新しい文字列。
9 */
10function convertNewlinesToHtmlBreaks(string $text): string
11{
12    // 検索対象の改行コードを配列で指定します。
13    // Windows形式 (\r\n) と Unix/macOS形式 (\n) の両方を処理することで、
14    // 異なる環境で作成されたテキストでも適切に処理できます。
15    $search = ["\r\n", "\n"];
16
17    // 置換後の文字列。HTMLの<br>タグに、PHP_EOL(現在のOSの改行コード)を付加して
18    // 出力時のソースコードの可読性を高めています。
19    $replace = "<br>" . PHP_EOL;
20
21    // str_replace関数は、第一引数の検索文字列(配列可)を、
22    // 第二引数の置換文字列(配列可)に置き換えます。
23    // 第三引数は置換対象の文字列です。
24    // 第四引数 ($count) はオプションで、置換が行われた回数を格納する変数の参照を指定します。
25    $result = str_replace($search, $replace, $text, $count);
26
27    // 処理結果を分かりやすく出力します。
28    echo "--- 元のテキスト ---" . PHP_EOL;
29    echo $text . PHP_EOL;
30    echo "--- 置換後のテキスト ---" . PHP_EOL;
31    echo $result . PHP_EOL;
32    echo "置換回数: " . $count . PHP_EOL;
33
34    return $result;
35}
36
37// サンプルテキストの定義
38$sampleText = "PHPのstr_replace関数は、\n"
39            . "文字列の置換によく使われます。\r\n"
40            . "特に改行コードの処理は、\n"
41            . "Webアプリケーション開発で頻繁に利用されます。";
42
43// 関数を呼び出して、改行コードを<br>タグに置換する
44convertNewlinesToHtmlBreaks($sampleText);

str_replace関数は、PHPで文字列内の特定の部分を別の文字列に置き換える際に使用される基本的な関数です。この関数は、文字列を検索し、見つかった部分を指定した文字列で置換し、その結果を新しい文字列として返します。

提供されたサンプルコードは、テキストに含まれる一般的な改行コード(Windows形式の\r\nとUnix/macOS形式の\n)をHTMLの<br>タグに変換する方法を示しています。これは、ユーザーが入力した複数行のテキストをWebページに表示する際に、改行を適切にHTMLの改行として表示するために非常に重要な処理です。

str_replace関数は、第一引数に検索対象の文字列または文字列の配列を、第二引数に置換後の文字列または文字列の配列を、第三引数に処理を行う元の文字列を指定します。この例では、$search変数に["\r\n", "\n"]という配列を渡すことで、複数の種類の改行コードを一度に検索しています。$replace変数には、置換後の文字列として"<br>" . PHP_EOLを指定しています。ここで使われているPHP_EOLは、PHPが動作しているOSの改行コードを表し、出力されるHTMLソースの可読性を高める目的で使用されています。

オプションの第四引数に整数型の変数(&$count)を渡すことで、実際に置換が行われた回数を取得できます。これにより、置換処理が何回発生したかを確認することが可能です。関数の戻り値は、すべての置換が適用された新しい文字列となります。このように、str_replace関数は、さまざまな環境で作成されたテキストデータをWeb用途に整形する際に、非常に便利で頻繁に利用されます。

str_replace関数で複数の改行コードを置換する際、\r\n(CRLF)のような長いシーケンスを\n(LF)より先に検索・置換することが重要です。そうしないと、\r\nが先に\nとして部分的に処理され、\rが残ってしまうなど、意図しない結果になる可能性があります。サンプルコードのように["\r\n", "\n"]の順で指定しましょう。

また、第4引数の$countは、置換回数を格納する変数を参照渡しで指定します。これは、関数内で$countの値が変更されると、呼び出し元の変数の値も更新されるという動作にご留意ください。

置換後の文字列をHTMLとして出力する場合、str_replaceで挿入される内容が信頼できるか確認することが大切です。特に、動的なユーザー入力を含む文字列を置換する際は、クロスサイトスクリプティング(XSS)脆弱性対策として適切なエスケープ処理を必ず検討してください。サンプルコードのPHP_EOLは、生成されるHTMLソースコードの可読性向上のためのものであり、Webブラウザの表示には直接影響しません。

PHP str_replace 文字列置換を行う

1<?php
2
3/**
4 * str_replace 関数の基本的な使用方法を示すサンプルコードです。
5 *
6 * str_replace は正規表現ではなく、指定された文字列を単純に別の文字列に置換します。
7 * 正規表現を用いた置換が必要な場合は、preg_replace 関数を使用してください。
8 */
9function demonstrateStrReplaceBasicUsage(): void
10{
11    // 1. 単一の文字列を別の単一の文字列に置換する
12    $originalString = "こんにちは、世界!PHPは素晴らしい言語です。";
13    $replacedString = str_replace("世界", "皆さん", $originalString);
14
15    echo "--- 単一文字列置換の例 ---\n";
16    echo "元文字列: " . $originalString . "\n";
17    echo "置換後:   " . $replacedString . "\n\n";
18
19    // 2. 複数の文字列を同時に置換する(検索と置換に配列を使用)
20    $programmingLanguages = "PHPとJavaとPythonは人気のある言語です。";
21    $searchFor = ["PHP", "Java", "Python"];
22    $replaceWith = ["JavaScript", "Ruby", "Go"];
23    $multipleReplacedString = str_replace($searchFor, $replaceWith, $programmingLanguages);
24
25    echo "--- 複数文字列置換の例 ---\n";
26    echo "元文字列: " . $programmingLanguages . "\n";
27    echo "置換後:   " . $multipleReplacedString . "\n\n";
28
29    // 3. 置換が行われた回数を数える(&$count 引数の使用)
30    $fruitsString = "apple, orange, apple, grape, apple";
31    $searchFruit = "apple";
32    $replaceFruit = "banana";
33    $replacementsCount = 0; // 置換された回数を格納する変数
34
35    $countedReplacedString = str_replace($searchFruit, $replaceFruit, $fruitsString, $replacementsCount);
36
37    echo "--- 置換回数カウントの例 ---\n";
38    echo "元文字列:   " . $fruitsString . "\n";
39    echo "置換後:     " . $countedReplacedString . "\n";
40    echo "置換された回数: " . $replacementsCount . "回\n";
41}
42
43// 関数を実行してサンプルコードの動作を確認します
44demonstrateStrReplaceBasicUsage();

PHPのstr_replace関数は、指定された文字列を別の文字列に置換するために使用されます。この関数は正規表現ではなく、単純な文字列の検索と置換を行います。正規表現による置換が必要な場合は、preg_replace関数をご利用ください。

第一引数$searchには検索対象の文字列、第二引数$replaceには置換後の文字列、第三引数$subjectには実際に処理を行う元の文字列を指定します。これらの引数は、それぞれ単一の文字列または文字列の配列として指定できます。配列を指定した場合、対応する要素が順番に置換されます。

第四引数&$countはオプションで、置換が行われた回数を格納するための変数を参照渡しで指定できます。これにより、いくつの置換が発生したかを確認することが可能です。関数の戻り値は、置換処理が完了した後の新しい文字列となります。$subjectが配列だった場合は、戻り値も配列になります。

サンプルコードでは、まず単一の文字列を別の文字列に置換する例、次に複数の文字列を同時に別の文字列に置換する例を示しています。さらに、特定の文字列を置換しながら、その置換回数を&$count引数で取得する方法も確認できます。この関数は、プログラム内で特定の文字列を効率的に変更する際に役立ちます。

str_replace関数は、指定した文字列を別の文字列に置換する際に使われます。最も重要な注意点は、この関数が正規表現を使用しないという点です。パターンマッチングに正規表現を使いたい場合は、preg_replace関数を利用する必要があります。

また、str_replaceはデフォルトで大文字・小文字を区別して置換します。大文字・小文字を区別せずに置換したい場合は、str_ireplace関数を使用すると良いでしょう。検索文字列や置換文字列に配列を渡すことで、複数の置換操作を一度に実行できます。さらに、第4引数に整数型の変数を参照渡しすることで、実際に文字列が置換された回数を取得できるため、処理の追跡やデバッグに役立ちます。これらの特性を理解し、適切な場面で活用してください。

PHP str_replaceで複数置換する

1<?php
2
3// str_replace関数を使って、複数の文字列を一括で置換するサンプルコードです。
4// 第一引数(検索文字列)と第二引数(置換文字列)に配列を渡すことで、
5// 複数の異なる置換操作を一度に行うことができます。
6
7// 検索したい文字列の配列を定義します。
8// 例: 'apple' を 'red_fruit' に、'banana' を 'yellow_fruit' に置換します。
9$searchWords = [
10    'apple',
11    'banana',
12    'orange',
13];
14
15// 検索文字列に対応する置換後の文字列の配列を定義します。
16// $searchWords の要素と $replaceWords の要素は、配列の順序に基づいて関連付けられます。
17// 例えば、$searchWords の最初の要素 ('apple') は $replaceWords の最初の要素 ('red_fruit') に置換されます。
18$replaceWords = [
19    'red_fruit',
20    'yellow_fruit',
21    'citrus_fruit',
22];
23
24// 置換対象となる元の文字列を定義します。
25$originalString = "I have an apple, a banana, and an orange in my basket.";
26
27// str_replace関数を実行します。
28// この関数は、指定された文字列($originalString)の中から、$searchWords配列内の各要素を検索し、
29// それに対応する $replaceWords配列内の要素に置換します。
30$modifiedString = str_replace($searchWords, $replaceWords, $originalString);
31
32// 置換結果を出力して確認します。
33echo "元の文字列: " . $originalString . PHP_EOL;
34echo "置換後の文字列: " . $modifiedString . PHP_EOL;
35
36?>

PHPのstr_replace関数は、指定した文字列を別の文字列に置換する機能を提供します。このサンプルコードは、複数の文字列を一括で置換する方法をシステムエンジニアを目指す初心者の方にも分かりやすく説明しています。

str_replace関数は、第一引数に検索したい文字列、第二引数に置換後の文字列、第三引数に置換対象の元の文字列を指定します。この関数では、第一引数($search)と第二引数($replace)に文字列の配列を渡すことで、複数の異なる置換操作を一度に行うことができます。

サンプルコードでは、$searchWords配列に置換したい複数のキーワードを、$replaceWords配列にそれらに対応する置換後の文字列を定義しています。これらの配列は、要素の順序に基づいて関連付けられます。例えば、$searchWordsの最初の要素('apple')は$replaceWordsの最初の要素('red_fruit')に置換されます。

そして、$originalStringに置換対象となる元の文章を設定し、str_replace関数を実行します。この関数は$originalStringの中から$searchWords配列内の各要素を検索し、それに対応する$replaceWords配列内の要素に置換した新しい文字列を戻り値として返します。

このように、str_replace関数に配列を渡すことで、複数の文字列の置換処理を効率的かつ簡潔に記述することが可能になります。実行結果として、元の文字列と、複数の置換が適用された後の文字列が表示されます。

str_replace関数で複数の文字列を配列で置換する際、第一引数の検索文字列と第二引数の置換文字列の要素は、配列の順序に基づいて1対1で対応します。この対応関係がずれると意図しない結果になるため注意してください。

また、検索文字列が複数ある場合、配列内で指定された順序で置換処理が行われます。前の置換によって生成された文字列が、次の置換の対象となる可能性があるため、置換の順序には特に注意が必要です。

この関数は大文字と小文字を区別して置換します。もし大文字・小文字を区別せずに置換したい場合は、代わりにstr_ireplace関数を使用してください。

置換が実際に何回行われたかを知りたい場合は、第四引数に整数型の変数を指定することで、その変数が置換回数を受け取ります。これにより、意図通りに置換が行われたかを確認できます。

関連コンテンツ

関連プログラミング言語