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