【PHP】文字列を検索して置換する方法|str_replace()・preg_replace()

今回はPHPで文字列を検索・置換する際に、よく使用するstr_replace、preg_replace関数の例となります。

文字列を検索し置換|str_replace() 

 str_replace関数は、引数に指定した条件により文字列を検索・置換します。以下、ソースコードの例となります。

ソースコードの例

// 検索・置換の対象となる文字列
$subject = "博多華丸";
// 検索する文字列
$search = "華丸";
// 置換する文字列
$replace = "大吉";
// str_replace関数で検索・置換
$output = str_replace( $search, $replace, $subject );

// 置換前の文字列を出力
echo "<p>" . $subject . "はツッコミですか?<br>";
// 置換後の文字列を出力
echo "いいえ。ツッコミは" . $output . "のほうです。</p>";

str_replace関数では、第3引数に指定した文字列から、第1引数で指定した文字列を検索し、第2引数に指定した文字列に置換して返します。なお、第1引数~第3引数は配列での指定も可能となります。

出力結果

上記ソースコードの例の出力結果は以下となります。

博多華丸はツッコミですか?
いいえ。ツッコミは博多大吉のほうです。

str_replace関数のパラメータ

str_replace( $search, $replace, $subject, $count );
$search
検索する文字列を指定します。配列での指定も可能。
$replace
置換後の文字列を指定します。配列での指定も可能。
$subject
検索・置換の対象となる文字列を指定します。配列での指定も可能。配列で指定した場合は、返り値も配列となります。
$count(省略可能)
置換が行われた箇所の個数を格納

search と replace が配列の場合

$search と $replace が配列の場合、各配列の順序に対応する値同士で、検索・置換を行います。 $replace の値が $search よりも少ない場合、 置換される残りの値には、空の文字列が使用されます。

str_replace関数以外でも文字列を検索・置換できる関数はあります。詳しくは、以下のリンク先を参考にしてみてください。

PHP: String 関数 - Manual

正規表現を用いて文字列を検索し置換|preg_replace()

preg_replace関数は、引数に指定した条件により、正規表現を用いて文字列の検索を行い置換します。以下、ソースコードの例となります。

ソースコードの例

// 検索・置換の対象となる文字列
$subject = "「塙」のぶゆき";
// 検索する正規表現のパターン。今回の例では、「」で囲まれている文字列を検索
$pattern = "/「.+?」/";
// 置換する文字列
$replacement = "「土屋」";
// preg_replace関数で検索・置換
$output = preg_replace( $pattern, $replacement, $subject );

// 置換前の文字列を出力
echo "<p>ナイツは" . $subject . "と、「何」のぶゆきですか?<br>";
// 置換後の文字列を出力
echo $output . "です。</p>";

preg_replace関数では、第3引数に指定した文字列から、第1引数で指定した正規表現のパターンを検索し、第2引数に指定した文字列に置換して返します。なお、第1引数~第3引数は配列での指定も可能です。

出力結果

上記ソースコードの例の出力結果は以下となります。

ナイツは「塙」のぶゆきと、「何」のぶゆきですか?
「土屋」のぶゆきです。

preg_replace関数のパラメータ

preg_replace( $pattern, $replacement, $subject, $limit, $count );
$pattern
検索を行う正規表現のパターンを指定します。配列での指定も可能。
$replacement
置換後の文字列を指定します。配列での指定も可能。
$subject
検索・置換の対象となる文字列を指定します。配列での指定も可能。配列で指定した場合は、返り値も配列となります。
$limit(省略可能)
置換を行う最大回数。デフォルトの値は-1となり制限無し
$count(省略可能)
置換が行われた箇所の個数を格納

$pattern と $replacement が配列の場合

$patternと $replacement が配列の場合、各配列の順序に対応する値同士で、検索・置換を行います。 $replacement の値が $pattern よりも少ない場合、 置換される残りの値には、空の文字列が使用されます。

preg_replace関数以外でも、正規表現を用いて文字列を検索し、置換できる関数はあります。詳しくは、以下のリンク先を参考にしてみてください。

PHP: PCRE - Manual

参考サイトなど

コメント投稿またはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。
Twitterで返信する場合はこちらから。

また、コメントは承認制となります。