本記事ではPHPで文字列を置換する方法について解説します。
PHPには文字列を操作する関数が多くありますが、多すぎてどれを使ったら良いか分からなくなる方も多いのではないでしょうか。
今回は文字列を置換する方法に絞って解説するので、初心者の方も参考にしてください。
PHPで文字列を置換する方法
PHPで文字列を置換する方法について解説します。
以下の順に従って説明していきましょう。
- 文字列を置換する
- 複数の文字列を置換する
- 大文字小文字関係なく置換する
- 指定した範囲のみ置換する
- 文字列を削除する
単に置換するだけでなく、指定した範囲のみ置換したり、複数の文字列を置換したりする方法についても説明していきます。
1)文字列を置換する
最初に、文字列を置換する方法について解説します。
文字列を置換する場合にもっとも基本として使うのが、str_replace関数です。
○コード例
<?php
$str = "Apple,Banana,Melon";
echo str_replace("Apple", "Orange", $str);
?>
○実行結果
上記のコードでは、str_replace関数によって「Apple」を「Orage」に置換しています。
第一引数に「変換前の文字列」、第二引数に「変換後の文字列」を指定することで置換が実現します。
2)複数の文字列を置換する
続いて、複数の文字列を置換する方法を解説します。
複数置換する場合もstr_replaceで可能です。
○コード例
<?php
$str = "Apple,Banana,Melon";
echo str_replace(array("Apple", "Banana"), "Orange", $str);
?>
○実行結果
複数置換する場合、「置換する前の文字列」を配列として第一引数に指定します。
上記では「Apple」と「Banana」を一括でOrageに変換しています。
3)大文字小文字関係なく置換する
続いて、大文字小文字に関係なく置換する方法について解説します。
大文字小文字関係なく置換する場合は、str_ireplace関数を使います。
○コード例
<?php
$str = "Apple,Banana,Melon";
echo str_ireplace("apple", "orange", $str);
?>
○実行結果
str_ireplace関数を使うことで「apple」と指定しても「Apple」を置換することができます。
4)指定した範囲のみを置換する
指定した範囲のみを他の文字列にすべて置換したい場合は、substr_replace関数を使います。
○コード例
<?php
$str = "Hello World";
echo substr_replace($str, "世界", 6);
?>
○実行結果
上記のコードでは、substr_replace関数によって6番目以降の文字列を「世界」に置換しています。
5)文字列を削除する
ここまで文字列を置換する方法を解説してきました。
最初に紹介したstr_replace関数を使って、特定文字列を削除することも可能です。
○コード例
<?php
$str = "Apple,Banana,Melon";
echo str_replace("Apple",””, $str);
?>
○実行結果
str_replaceの第二引数を空文字(””)にすれば、その文字列を削除することができます。
str_replaceはこのように文字列を置換するだけでなく削除する際にも使うことが可能です。
正規表現で文字列を置換する方法
PHPで文字列を置換する場合、上記で解説した方法だけでなく、正規表現を使う方法もあります。
正規表現を使うことで、特定パターンにマッチした文字列を一括で置換することができ、より高度な文字列操作が可能になります。
次の2つの手順に従って正規表現について解説します。
- 正規表現で置換する
- 正規表現で最初だけ置換する
正規表現は初心者には難しいので、今回はあくまで基礎に絞って説明していきましょう。
1)正規表現で置換する
正規表現で置換する方法について解説します。
正規表現で文字列を置換する場合はpreg_replaceを使います。
○コード例
<?php
$str = "Apple,Banana,Melon";
echo preg_replace("/Apple/","Orange", $str);
?>
○実行結果
基本的にはpreg_replaceはstr_replaceなどと使い方が一緒です。
第一引数に置換する前の文字列、第二引数に置換した後の文字列を指定します。
上記のコードでは「Apple」にマッチする文字列を置換しています。
2)正規表現で最初だけ置換する
続いて、最初の文字列だけを置換する方法を解説します。
str_replace関数では、最初の文字列だけを置換するということができません。
○コード例
<?php
$str = "Apple,Banana,Melon,Apple,Apple";
echo str_replace("Apple","Orange", $str);
?>
○実行結果
最初の「Apple」だけ「Orange」に置換したいのに、上記ではすべての「Apple」が置換されてしまいます。
ところが正規表現を使えば、最初の文字列だけを置換することが可能です。
○コード例
<?php
$str = "Apple,Banana,Melon,Apple,Apple";
echo preg_replace("/Apple/","Orange", $str, 1);
?>
○実行結果
上記のコードではpreg_replaceが使われています。
上記のように第四引数に「1」をつけることで、最初の文字列のみ置換し、後の文字列には影響を及ぼさないようにできます。
まとめ
本記事ではPHPで文字列置換を行う方法について解説しました。
Webアプリ開発において文字列操作を行う場面は多くあります。
たとえば、ユーザーが入力した内容を整形してデータベースに格納する際も、今回解説したような関数が欠かせません。
文字列置換に関する関数はマスターしておくようにしましょう。