謎のサンプルコード付き!PHPで文字列を一括置換する方法

2022年10月31日月曜日

PHP

t f B! P L

PHP文字列を一括で置換する

PHPで、文字列から特定文字を別の文字に一括置換する方法を紹介します。

お急ぎの人のためのサンプルコード

文字列の置換には str_replace 関数を用いる。

PHPでは、マルチバイト文字を扱う場合は md_*から始まる関数をよく用いるが、str_replace に関してはマルチバイトにも対応しているため、日本語を含む文字でも問題なく置換できる。

$str = "ミネストローネが飲みたい!明日スーパーでミネストローネを買ってこよう!";

$replace_str = str_replace("ミネストローネ", "梅昆布茶", $str);

echo $replace_str;  //-> 梅昆布茶が飲みたい!明日スーパーで梅昆布茶を買ってこよう!

str_replace の構文

str_replace 関数の構文は次のとおりである。

str_replace( $search, $replace, $subject, $count );
  1. search
    検索対象(置換する対象)の文字列。(配列で複数指定可)
  2. replace
    置換する文字列。$search で一致した文字列が、この $replace で指定した文字列に置換される。(配列で複数指定可)
  3. subject
    検索および置換する対象の文字列あるいは配列。
  4. count
    指定した場合、対象の文字列に対して置換が行われた回数が入る(output変数)

複数の文字列を一括で置換する

検索対象の文字列に配列を指定すると、配列で指定した文字列を指定した文字を一括で置換できる。

実際にコードを書いて試してみよう。

$str = "パンとスープで朝食を食べた!";

$replace_str = str_replace(["パン", "スープ"], "梅昆布茶", $str);

echo $replace_str;  //-> 梅昆布茶と梅昆布茶で朝食を食べた!

かなりヤバい感じの朝食メニューとなってしまったが、パンスープ の文字列を一括で置換することができた。

置換する文字列を複数指定する

あまり利用シーンは少ないかもしれないが、検索対象と置換対象に配列を指定することで、配列の各要素に対応する文字が置換される。

$str = "小麦アレルギーなので白米と、米粉100%のパンなら食べられる。";

$replace_str = str_replace(
  ["白米", "米粉"], 
  ["うどん","小麦粉"],
  $str);

echo $replace_str;  //->   小麦アレルギーなのでうどんと、小麦粉100%のパンなら食べられる。

かなりアレルギーが心配される結果となってしまったが、検索対象の配列の1番目の「白米 」に一致する文字が「うどん」に置換され、配列2番目の「米粉」に一致する文字が「小麦粉」に置換されている。

ちなみに上のコードは、次のように2行に分けて置換した時と同じ結果となる。

$replace_str = str_replace("白米", "米粉茶", $str);
$replace_str = str_replace("うどん", "小麦粉", $replace_str);

まとめ

PHPの str_replace 関数を使って、文字列を置換する方法を紹介した。

文字列の置換は、プログラミングおける基本中の基本なので覚えておきたい。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ