【まとめ】PHPの文字列の一致・切り出し・分割・置換

普段開発している際に文字列の処理を行う際に、preg_matchを使うのか、strposを使うのか、、、、といった感じで、どの状況でどの関数を使うのが適切なのか毎回曖昧になり、調べることが多かったので、今回思考整理もかねてまとめました。


文字列の一致

特定の文字を含むかどうかの確認は以下の関数を用いることで出来ます。

・strpos
・strstr
・preg_match

上記二つは正規表現を使わない場合で、preg_matchは正規表現を用いる場合に利用します。 速度はstrposが一番早く、一番利用頻度も高くなります。 文字列を含むかどうかのチェックや関数の使い方などは以下のサイトにまとめられています。

【PHP】特定の文字列を含むかのチェック

文字列の切り出し

文字列の中から指定した文字を取得するためには以下の関数を用います。

・substr
・mb_substr

上記の関数は文字列の一部を切り出すための関数であり、どちらの関数も開始位置や文字数の指定をして切り出しを行います。 詳しい使い方は以下のサイトが参考になるかと思います。

phpでの文字列の切り出しのやり方【substr/mb_substr】

substrとmb_substrの違いは文字列の文字コードの指定を行えるかどうかであり、日本語の文字列を扱う場合はmb_substrを利用するようにしましょう。 この文字列の切り出しを利用すると文字列の最後の文字1文字を削除といったこともできるようになります。

$user_ids = "id_01,id_02,id_03,id_04,";

$user_ids = substr($user_ids, 0, -1);   //最後の「,」を削除

他に文字列の切り出しの方法としては

・wordwrap
・split
・strstr // 文字列が最初に現れる位置を見つける

などが用いられています。 strstrの使い方は以下のようになります。

$email  = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // @example.com と表示します

文字列の分割

特定の文字列を分割するには以下の関数を利用します。

・explode
・str_split
・preg_split
・mb_split

それぞれに使用用途があります。 ・explode → 文字列を文字列で分割する場合 ・str_split →文字列を文字数で分割する場合 ・preg_split →正規表現を用いて分割する場合 ・mb_split →マルチバイト文字列を分割する場合 上記のようにそれぞれ分割したい要素に応じて関数を使い分けることができいます。

文字列の置換

特定の文字列をある文字列に置換して変更したい場合は以下の関数を用います。

・preg_replace
・str_replace

上記の関数はどちらも文字列の置換を行えますが、preg_matchは正規表現を利用できるという違いがあります。 str_replaceを利用すると以下のように文字列の置換を行うことができます。

$str = '港区六本木';
$new_str = str_replace('港区', '東京都港区', $str);

print($new_str);
// 東京都港区六本木 と出力される