プログラムにおいて、対象のデータの中に指定した文字列が存在したら置換する処理はよく使われます。
この記事では、PHPで文字列を置換するstr_replace関数について、
・str_replace関数の基本的な使い方
・str_replace関数で配列を置換する方法
・str_replace関数で改行を置換する方法
という内容から、
・大文字小文字を区別しないで置換する「str_ireplace関数」の使い方
・正規表現を指定して置換する「preg_replace関数」の使い方
・正規表現を指定してマルチバイト文字列を置換する「mb_ereg_replace」関数の使い方
などの使い方について解説していきます。
今回はそんな文字列を置換するreplace系の関数の使い方について詳しく解説いたします!
str_replaceで文字列を置換
検索した文字列に一致した全ての文字列を置換するにはstr_replace関数を使用します。
str_replace( $検索文字列 , $置換後文字列 , $検索対象文字列 [, int &$count ] )
引数:
第一引数に検索文字列を指定し、第二引数に置換文字列を指定します。
返り値:
置換後の文字列または配列を返します。
以下にstr_replaceを使用して文字列を置換する方法を記述します。
$text = 'apple,orange,apple,orange'; //指定した文字列が一致したら置き換える $replace = str_replace('apple', 'melon', $text); echo $replace;
実行結果:
melon,orange,melon,orange
このサンプルではstr_replace関数を使用して、文字列の中に’apple’があったら’melon’に置き換えています。
以下のように日本語を検索して置換することもできます。
$text = '侍エンジニアのマンツーマンレッスン'; //指定した文字列が一致したら置き換える $replace = str_replace('侍エンジニア', 'SamuraiEngineer', $text); echo $replace;
SamuraiEngineerのマンツーマンレッスン
以下の記事では文字列を置換するさまざまな方法や、文字列を扱う方法について解説していますので、合わせて参考にしてくださいね!
配列の値を置換する方法
str_replace関数は、配列の値を置換することもできます。
配列を置換する場合には第三引数に配列を指定します。
第四引数を指定すると、文字列を置換した回数が取得できます。
$fruits = ['apple', 'orange', 'melon', 'apple', 'pineapple']; $replace = str_replace('apple', 'melon', $fruits, $count); print_r($replace); echo '置換した回数: '.$count;
Array ( [0] => melon [1] => orange [2] => melon [3] => melon [4] => pinemelon ) 置換した回数: 3
改行を置換する方法
str_replace関数を使用すれば、改行が含まれている文字列から改行を削除することもできます。
以下のサンプルではfile_get_contents関数でファイルの内容を取得し、改行コードが含まれていたら「”」に置き換えています。
$file = 'test.txt'; //ファイルの内容を取得する $text = file_get_contents($file); echo '改行削除前: <br>'; echo $text."n".'<br>'; //配列に改行コードを格納する $line_array = ["\r\n", "\r", "\n"]; //改行コードをが含まれていた場合は''に置き換える $text = str_replace($line_array, '', $text); echo '改行削除後: <br>'; echo $text;
実行結果:
改行削除前: apple orange melon banana painapple 改行削除後: appleorangemelonbananapainapple
以下の処理ではPHPの改行の扱い方について、詳しく解説していますので、合わせて参考にしてください。
str_ireplaceで大文字小文字を区別しないで置換
str_ireplace関数は大文字小文字を区別しないで置換するときに使用します。
引数:
引数の指定方法は上述したstr_replace関数と同じです。
返り値:
置換後の文字列または配列を返します。
$text = 'Samurai Engineer Blog'; //str_replace echo str_replace('engineer', 'engineer', $text).'<br>'; //str_ireplace echo str_ireplace('engineer', 'engineer', $text);
実行結果:
Samurai Engineer Blog Samurai engineer Blog
preg_replaceで正規表現による置換
指定した正規表現でマッチした文字列の置換を行うためには、preg_replace関数を使用します。
preg_replace( $正規表現パターン , $置換後の文字列 , $置換対象の文字列 )
引数:
第一引数に正規表現を指定し、第二引数に置換後の文字列、第三引数に置換対象の文字列を指定します。
返り値:
引数に配列を指定した場合は配列を返し、それ以外は文字列を返します。
以下にpreg_replace関数を使用した正規表現での置換方法を記述します。
$str = 'もう少しで2016年の夏も終わりです'; $str_grep = preg_replace('/(もう少しで)2016/', '$1 2017', $str); echo $str_grep;
実行結果:
もう少しで 2017年の夏も終わりです
サンプルでは第一引数の正規表現で()で囲った文字列を検索し、存在した場合は、2016を2017に置換しています。
mb_ereg_replaceでマルチバイト文字列の置換
マルチバイト文字(2バイト以上のデータで表現される文字)を置換するにはmb_ereg_replace関数を使用します。
mb_ereg_replace( $正規表現パターン , $置換後の文字列 , $置換対象の文字列 )
引数:
第一引数に正規表現を指定し、第二引数に置換後の文字列、第三引数に対象の文字列を指定します。
返り値:
置換が成功した場合は結果の文字列を返し、失敗した場合はFALSEを返します。
以下にmb_ereg_replace関数を使用した正規表現での置換方法を記述します。
$str = 'ABCDEFGHIJKL1234567'; //アルファベットA-Zを全て'Z'に置き換える $str_grep = mb_ereg_replace('[A-Z]', 'Z', $str); echo $str_grep;
実行結果:
ZZZZZZZZZZZZ1234567
サンプルでは、正規表現でアルファベットの大文字A-Zが存在したら、指定した文字列でマルチバイト文字列に変換しています。
正規表現や正規表現の置換についてもっと知りたい方へ
正規表現のさまざまな使い方や、正規表現で置換するさまざまな方法については、以下の記事で詳しく解説しています!
正規表現についてもっと知りたい方はぜひ参考にしてくださいね!
PHPを継続的に学習するコツ
PHPの学習をしていて、わからないところが多く何回も調べながらやるのは正直、嫌になってしまいますよね。そこで、どのようにすれば継続的に学習を続けて行けるのかそのコツをご紹介します。
目的を明確にする
まずは、なぜPHPを学んでいるのか明確にしましょう。例えば、PHPを学んで
- Webサイトが作りたい
- WordPressの編集がしたい
- エンジニアとして転職したい
- フリーランスを目指したい
など、目的は色々あると思います。
この目的を明確にすることがとても大事で、PHPを学ぶ学習意欲に繋がっていきます。目的がないまま学習をしていると、学習すること自体が目的になってしまい、ゴールのない果てしない道を進むことになります。その結果、挫折してしまう人が多いのが現状となっています。
そうならないためにも、PHPを学ぶ目的は言えるようにしましょう。もし言えない場合は、学ぶプログラミング言語自体間違っている可能性もあります。なので、しっかり目的から学んでいる言語があっているか確認しましょう。
学習プランを決める
目的が明確になったら、次に学習プランを立てましょう。この学習プランを立てずに学習している人が多いのですが、学習プランがないと自分が今どのくらい進んでいて、後どのくらい学習をすればいいのか見えないので、学習をすること自体がきつく長続きしません。
学習を継続的に続けるためには学習プランは必須とも言えます。いつまでに、どのレベルになっていて、最終的なゴールはいつ達成するのかはしっかり決めましょう。
先生を見つける
「何度もエラーになって、自分で調べては修正する」この繰り返しがPHPを学習していると起こります。調べてもよくわからないし、時間もかかってしまってプラン通りに学習が進まないというのは当然のように起こります。
このように思い、学習をすること自体に嫌気が指して挫折してしまう人も多いです。
そうならないためにも、「先生」を見つけることが大事になります。先生と言ってもそう簡単に探せそうにないですよね。最近ではSNSでもコミュニティーが増え、相談しやすい環境が増えてきています。こういったコミュニティーや勉強会を利用して先生を見つけるのも一つの手です。
自分に投資することも大事
学習サイトやアプリなど、無料で学習できる環境が整ってはいるものの自分に投資して学習をすることも大事です。本や有料学習サイトは、無料では学べない範囲の学習や機能が付いているので、効率的に学習をすることが可能です。
そして、投資のもう一つの方法がプログラミングスクールで学ぶことです。
独学と違い、プログラミングスクールでは上で紹介した学習を継続するためのサポートが徹底されているので、最も効率の良い学び方と言えるでしょう。先生も自分で探す必要がないので、エラーなどで躓いて時間がかかる心配もありません。
ですが、当然いきなりスクールに入るのは抵抗がありますよね。
その場合は、弊社で行っている無料カウンセリングへ参加してみてください。この無料カウンセリングでは、なぜPHPを学ぶのかその目的をヒアリングして、本当にPHPを学ぶべきなのか、その学習プランはどのように立てるのかなどの提案をしています。
目的をヒアリングすることで、あなたに最適な言語や学習プランが分かるので、最速でエンジニアを目指せるイメージがわきます。
手軽にしかもオンラインでも受けられるので、ぜひ一度目的を明確にしてみましょう。
まとめ
ここでは、文字列置換について
・str_replace関数の基本的な使い方
・str_replace関数で配列を置換する方法
・str_replace関数で改行を置換する方法
・str_ireplace関数の基本的な使い方
・preg_replace関数で正規表現による置換方法
・mb_ereg_replace関数でマルチバイト文字列の置換方法
などについて解説しました。
文字列操作において、指定した文字列に置換する方法はよく使いますのでよく覚えておきましょう。
もしstr_replace関数の使い方を忘れてしまったら、この記事を思い出してくださいね!