【PHP】文字の置き換え、str_replace()と正規表現置換preg_replace()
WordpressやPHPのレッスンをしている際に文字の置き換えに関する質問を頂いたので、自分も少し調べつつメモ書き。
文字列の置換えの関数についての記事となっています。
特に正規表現を使った関数は非常に便利ですが、正規表現について私はうろ覚えでいつも調べながら使っているので備忘録として記しておこうと思います。
PHPでシンプルな文字の置き換えをするならstr_replace()
公式のPHPのドキュメントでは以下のように掲載されています。
str_replaceは日本語による検索、置換えにも対応しています。
▼使い方は以下のような形。
str_replace('検索する文字列', '置き換え後の文字列', '対象の文字列');
第1引数に検索する文字列。
第2引数に置き換え後の文字列。
第3引数に検索置き換えの対象の文字列。
第4引数は省略可で、変数指定した場合は何箇所置き換えたかをカウントして代入します。
▼例1
<?php echo str_replace('am', 'am not', 'I am John'); /*実行結果 I am not John */ ?>
1,2,3の引数は文字列ではなくその文字列が入った配列も可。
配列の場合はそれぞれ置き換えを実行していきます。
▼例2 配列を指定した場合
<?php $search = array('I', 'am', 'John'); $replace = array('You', 'are', 'Ken'); echo str_replace($search, $replace, 'I am John.'); /*実行結果 You are Ken. */ ?>
正規表現による文字の置き換えをするならpreg_replace()
PHPで正規表現を使った文字置き換え、preg_replaceの使い方はstr_replaceとほとんど同じです。
preg_replace('検索する文字列のパターン', '置き換え後の文字列', '対象の文字列');
正規表現とは
正規表現とは、文字列をパターンで検索する方法のこと。
特殊な書き方をするので、完全に使いこなすにはそれ専門の知識と経験が必要なものです。
ただ通常では難しい条件を指定した強力な文字検索が可能なので、調べながらでも使えるようになると非常に便利です。
例えばHTMLから特定のタグを検索しclass/idを追加したり、改行やスペースなど特殊な記号を置き換えたり、、文字検索・置換において、「できたらいいな」を実現するのが正規表現と言っても過言ではないと思います。
画像にクラスを追加し、aタグで囲った例
echo preg_replace('/<img src="(.*?)" class="(.*?)">/', '<a href="$1" target="_blank"><img src="$1" class="$2 new-class"></a>', '<img src="images/sample.jpg" class="default-class">' ); /*▼出力結果 <a href="images/sample.jpg" target="_blank"><img src="images/sample.jpg" class="default-class new-class"></a> */
上記の例のように、パターンで検索した文字列の不規則な部分(.*?)は$1、$2といった変数に順番に代入されるので、置き換え後に扱えます。
(.*?)は「改行以外の文字列」を意味します。
コードエディタ内の検索置換にも使える場合があるので、最低限のパターンを覚えておくと便利です。
▼正規表現の書き方について、詳しくは書籍や色々なサイトで解説されているので、是非ご参考ください。
便利な関数は可能な限り覚えれたら便利、、
個人的には元がデザイン畑の人間なので関数を覚えるのは苦手です。
いつも作業の中で「これどうやるんだっけ」とPHP関数など調べる事が多いです。
調べながらでもやろうとしている事が実現できれば何の問題も無いですが、こういった文字置き換えなどの基本的な関数は覚えておくとパパッと作業が捗るだろうと思います。
そのためにもこういった備忘録をつけているような感じで、自分なりにメモをとったり、まとめて見返せるように記録しておくのがおすすめです。
是非少しでもお役に立てたなら幸いです。
最後までお読み頂きありがとうございました!
▼PHPの基本的な使い方を学ぶならこちら。