・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2023年12月25日に投稿されました。)
PHPで対象の文字列を違う文字列へ置換するにはstr_replace()を使用します。
str_replace()とは対象の文字列を違う文字列へ置き換える関数となります。
そのため、表示するコードや入力した文字列などを出力する前に対象の文字列を異なる文字列へ置換することができます。
また、文字列だけでなく配列に対しても使用でき、配列の場合は対象の要素を異なる要素へ置換することもできます。
以上のことから、もし文字列を違う文字列に置換したい場合にはstr_replace()を使用しましょう。
今回はPHPのstr_replace()で対象の文字列を違う文字列へ置換する方法について紹介していきます。
文字列から対象の文字を別の文字に置換したい場合
文字列から対象の文字を削除したい場合
str_replace()とは
str_replace()とは対象の文字列から検索し、一致する文字列を置換することができる関数になります。
検索対象文字として大文字と小文字は別の文字となります。
str_replace()の書き方
str_replace()の書き方は下記のようになります。
1 | str_replace($対象の文字列, $置換後の文字列, $検索文字列の文字列 [,$カウント]) |
str_replace()の括弧の中に必須な引数3つを指定することで使用することができます。
また、任意な引数を1つ追加で指定しても使用することが可能で、合計で4つの引数を指定することができます。
str_replace()の引数
str_replace()の引数は下記のようになります。
- 対象の文字列:(必須)
置換する対象の文字列を指定する。 - 置換する文字列:(必須)
置換する文字列を指定する。 - 置換前の文字列:(必須)
置換前の文字列を指定する。 - カウンタ:(任意)
置換した数をカウントする。
str_replace()は必須な引数として「対象の文字列」と「置換後の文字列」、「置換前の文字列」を指定することで使用できます。
また、任意な引数として「カウンタ」を追加で指定することもできます。
「置換前の文字列」の中にある「対象の文字列」を「置換後の文字列」に置換するというイメージになります。
str_replace()の返り値
str_replace()の返り値は置換された全体の文字列となります。
str_replace()で対象の文字列を違う文字列へ置換するサンプルコード
str_replace()で対象の文字列を違う文字列へ置換するサンプルコードをご紹介します。
ここでは下記の3パターンでstr_replace()を使用します。
- 対象の文字列が存在する場合
- 対象の文字列が存在しない場合
- 対象の文字列が複数存在する場合
対象の文字列が存在する場合
対象の文字列が存在する場合にstr_replace()を使用すると、対象の文字列を別の文字列へ置換します。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php echo "● 置換前の文字列-1"; $text1 = 'あいうえお'; echo $text1; echo "● str_replace()使用後-1"; $text1_repl = str_replace('あ', '*', $text1); echo $text1_repl; echo "● 置換前の文字列-2"; $text2 = '123456789'; echo $text2; echo "● str_replace()使用後-2"; $text2_repl = str_replace(123, '***', $text2); echo $text2_repl; echo "● 置換前の文字列-3"; $text3 = 'abcdefgABCDEFG'; echo $text3; echo "● str_replace()使用後-3"; $text3_repl = str_replace('abcdefg', '*******', $text3); echo $text3_repl; ?> |
● 実行結果
対象の文字列が存在する場合にstr_replace()で対象の文字列を別の文字列へ置換しています。
そのため、「あいうえお」が「*いうえお」に、「123456789」が「***456789」に、「abcdefgABCDEFG」が「*******ABCDEFG」となって表示されています。
対象の文字列が存在しない場合
対象の文字列が存在しない場合にstr_replace()を使用すると、置換は行われず文字列をそのまま返します。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php echo "● 置換前の文字列-1"; $text1 = 'あいうえお'; echo $text1; echo "● str_replace()使用後-1"; $text1_repl = str_replace('ア', '*', $text1); echo $text1_repl; echo "● 置換前の文字列-2"; $text2 = '123456789'; echo $text2; echo "● str_replace()使用後-2"; $text2_repl = str_replace(19, '***', $text2); echo $text2_repl; echo "● 置換前の文字列-3"; $text3 = 'abcdefgABCDEFG'; echo $text3; echo "● str_replace()使用後-3"; $text3_repl = str_replace('asdf', '*******', $text3); echo $text3_repl; ?> |
● 実行結果
対象の文字列が存在しない場合にstr_replace()で対象の文字列を別の文字列へ置換しています。
今回は置換が行われないため、文字列がそのまま表示されています。
対象の文字列が複数存在する場合
対象の文字列が複数存在する場合にstr_replace()を使用すると、対象全ての文字列を置換します。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php echo "● 置換前の文字列-1"; $text1 = 'あいうえおあいうえお'; echo $text1; echo "● str_replace()使用後-1"; $text1_repl = str_replace('あい', '##', $text1); echo $text1_repl; echo "● 置換前の文字列-2"; $text2 = '123456789123456789'; echo $text2; echo "● str_replace()使用後-2"; $text2_repl = str_replace('12345', '#####', $text2); echo $text2_repl; echo "● 置換前の文字列-3"; $text3 = 'abcdefgABCDEFGabcdefg'; echo $text3; echo "● str_replace()使用後-3"; $text3_repl = str_replace('abcdefg', '#######', $text3); echo $text3_repl; ?> |
● 実行結果
対象の文字列が複数存在する場合にstr_replace()で対象の文字列を別の文字列へ置換しています。
そのため、「あいうえおあいうえおが「##うえお##うえお」に、「123456789123456789」が「#####6789#####6789」に、「abcdefgABCDEFGabcdefg」が「#######ABCDEFG#######」となって表示されています。
str_replace()で回数をカウントして対象の文字列を違う文字列へ置換する場合
str_replace()で回数をカウントして対象の文字列を違う文字列へ置換するには、引数にカウントを指定します。
カウントを指定することで、置換した回数を計算することができます。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php echo "● 置換前の文字列-1"; $text1 = 'あいうえお'; echo $text1; echo "● str_replace()使用後-1"; $text1_repl = str_replace('あい', '##', $text1, $cnt1); echo $text1_repl; echo '置換回数: '.$cnt1; echo "● 置換前の文字列-2"; $text2 = '123456789123456789'; echo $text2; echo "● str_replace()使用後-2"; $text2_repl = str_replace('145', '###', $text2, $cnt2); echo $text2_repl; echo '置換回数: '.$cnt2; echo "● 置換前の文字列-3"; $text3 = 'abcdefgABCDEFGabcdefg'; echo $text3; echo "● str_replace()使用後-3"; $text3_repl = str_replace('abcdefg', '#######', $text3, $cnt3); echo $text3_repl; echo '置換回数: '.$cnt3; ?> |
● 実行結果
置換する回数をカウントしてstr_replace()で対象の文字列を別の文字列へ置換しています。
そのため、「##うえお」は置換回数が1回のため、「1」が、「123456789123456789」は置換回数が0回のため「0」が、「#######ABCDEFG#######」は2回のため「2」が表示されています。
str_replace()で複数の対象の文字列を違う文字列へ置換する場合
str_replace()で複数の対象の文字列を違う文字列へ置換するには繰り返し処理と組み合わせて使用します。
繰り返し処理とは同じ処理を繰り返して行う処理方法であり、配列に対して使用すると格納された要素に対して順番に処理を行うことができます。
そのため、置換した文字列に対して更に置換を行うことで複数の対象の文字列を違う文字列へ置換することが可能になります。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php echo "● 置換前の文字列"; $text = 'あいうえおabcdefgABCDEFGアイウエオ'; echo $text; echo "● str_replace()使用後"; $regs = ['あいうえお', 'ABCDEFG']; foreach($regs as $reg) { $text_repl = str_replace($reg, '***', $text); $text = $text_repl; } echo $text_repl; ?> |
● 実行結果
str_replace()で複数の対象の文字列を違う文字列へ置換しています。
今回はforeach()を使用して対象の文字列ごとにstr_replace()を使用しています。
そのため「あいうえお」が「*いうえお」に、「123456789」が「***456789」に、「abcdefgABCDEFG」が「*******ABCDEFG」となって表示されています。
もし、foreach()について詳しく知りたい場合は下記の記事をご参考ください。
str_replace()で対象の文字列を削除する場合
str_replace()で対象の文字列を削除するには、置換後の文字列に「”(空文字)」を指定します。
対象の文字列を空文字に置き換えるため、自動的に文字列を削除することができます。
● index.php
1 2 3 4 5 6 7 8 9 | <?php echo "● 置換前の文字列"; $text = "こ#の文字#列にある記#号を削除#す#る。"; echo $text; echo "● str_replace()使用後"; $text = str_replace("#", "", $text); echo $text; ?> |
● 実行結果
str_replace()で対象の文字列を削除しています。
今回は「#」を削除したため、間が詰められて「この文字列にある記号を削除する。」という文字列が表示されています。
str_replace()を配列に対して使用する場合
str_replace()は文字列だけでなく配列に対しても使用することができます。
配列に使用することで対象要素を別の要素へ置換することが可能になります。
● index.php
1 2 3 4 5 6 7 8 9 10 | <?php echo "● 置換前の配列"; $array = ['JavaScript', 'PHP', 'Java', 'C#', 'C++', 'Ruby', 'Swift']; print_r($array); echo "● str_replace()使用後"; $array_rep = str_replace('JavaScript', 'TypeScript', $array, $cnt); print_r($array_rep); echo '置換回数: '.$cnt; ?> |
● 実行結果
str_replace()で配列の要素を違う要素に置換してぃす。
そのため「JavaScript」の要素が「TypeScript」に置換されています。
もし、str_replace()を配列に使用する方法について詳しく知りたい場合は下記の記事をご参考ください。
str_replace()を使用した実際のケース
str_replace()を使用した実際のケースについてご紹介します。
ここでは下記の2ケースでstr_replace()を使用します。
表示するHTML要素を変更する場合
str_replace()で表示するHTML要素を変更することができます。
例えば、HTML要素として表示する内容をstr_replace()で対象の文字を違う文字に変更します。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php get_header(); ?> <div class= "flex-box"> <main id="site-content" role="main"> <?php $startTag = '<p class="title">'; $startTag = str_replace("p", "h2", $startTag); $endTag = '</p>'; $endTag = str_replace("p", "h2", $endTag); $content1 = "タイトルを表示する"; $content1_repl = str_replace("タイトル", "固定ページや投稿ページのタイトル",$content1); echo '<div class = "main-box">'.$startTag.$content1_repl.$endTag.'</div>'; ?> </main> <aside class= "site-widget"> <?php $content2 = "ウィジェットを表示する"; $content2_repl = str_replace("ウィジェット", "ウィジェットのタイトル", $content2); echo '<div class = "widget-box">'.$startTag.$content2_repl.$endTag.'</div>'; ?> </aside> </div> <?php get_footer(); ?> |
● style.css
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | .flex-box { display: flex; width: 87%; height: 500px; margin: auto; text-align: center; } .title { font-size: 20px; font-weight:bold; } #site-content { width:70%; border: 1px solid black; background: lightgray; margin-right: 2%; } .site-widget { width:25%; border: 1px solid black; background: lightgray; } |
● 実行結果
str_replace()で表示するHTML要素を変更しています。
ここではHTML要素として表示する要素のタグと中身を違う文字列に置換しています。
そのため、「pタグ」が「h2タグ」に変換されて画面に表示されています。
また、「タイトルを表示する」から「固定ページや投稿ページのタイトルを表示する」に、「ウィジェットを表示する」が「ウィジェットタイトルを表示する」に変換して画面に表示されています。
JavaScript内の処理を変更する場合
str_replace()はJavaScriptの処理を変更することができます。
例えば、JavaScriptで処理する内容をstr_replace()で違う処理に変更します。
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php get_header(); ?> <div class= "flex-box"> <main id="site-content" role="main"> <?php $content1 = "タイトルを表示する"; echo '<div class = "main-box">'.'<p class="title">'.$content1.'</p>'.'</div>'; ?> </main> <aside class= "site-widget"> <?php $content2 = "ウィジェットを表示する"; echo '<div class = "widget-box">'.'<p class="title">'.$content2.'</p>'.'</div>'; ?> </aside> </div> <?php $script1 = 'window.addEventListener("load", function() {'; $script2 = 'let cont = document.querySelector("#site-content")'; $script3 = 'cont.style.background = "pink"})'; $script1 = str_replace("load", "scroll", $script1); echo "<script>".$script1."\n".$script2."\n".$script3."</script>"; $script4 = 'window.addEventListener("load", function() {'; $script5 = 'let wid = document.querySelector(".site-widget")'; $script6 = 'wid.style.background = "yellowgreen"})'; $script4 = str_replace("load", "click", $script4); echo "<script>".$script4."\n".$script5."\n".$script6."</script>"; ?> <?php get_footer(); ?> |
● style.css
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | .flex-box { display: flex; width: 87%; height: 500px; margin: auto; text-align: center; } .title { font-size: 20px; font-weight:bold; } #site-content { width:70%; border: 1px solid black; background: lightgray; margin-right: 2%; } .site-widget { width:25%; border: 1px solid black; background: lightgray; } |
● 実行結果
str_replace()でJavaScript内の処理を変更しています。
ここではaddEventListener()のイベント名をstr_replace()で置換しています。
そのため、画面をスクロールするとmain要素の背景色が変化し、クリックするとaside要素の背景色が変化しています。
大文字小文字を区別しないで対象の文字列を違う文字列へ置換する場合
大文字小文字を区別しないで対象の文字列を違う文字列へ置換する場合はstr_ireplace()を使用します。
str_ireplace()とは対象の文字列を違う文字列へ置換する関数になります。
今回ご紹介しているstr_replace()と変わりありませんが、大文字と小文字が区別されないという違いがあります。
● index.php
1 2 3 4 5 6 7 8 9 | <?php echo "● 置換前の文字列"; $text = 'abcdefgABCDEFGabcdefg'; echo $text; echo "● str_ireplace()使用後"; $text_repl = str_ireplace('abcdefg', '#######', $text); echo $text_repl; ?> |
● 実行結果
str_ireplace()で大文字小文字関係なく対象の文字列を違う文字列へ置換しています。
そのため「abcdefgABCDEFGabcdefg」が「#####################」となって表示されています。
正規表現を使用して対象の文字列を違う文字列へ置換する場合
正規表現を使用して対象の文字列を違う文字列へ置換するにはpreg_replace()を使用します。
preg_replace()とは正規表現を使用して文字列を置換するメソッドになります。
そもそも正義表現とはいくつかの文字列をパターンでマッチするよう1つの形式で表現するための方法となります。
そのため、無数にある文字列のパターンでも対象の文字列と判断し違う文字列へと置換することが可能となります。
● index.php
1 2 3 4 5 6 7 8 9 | <?php echo "● 置換前の文字列"; $text = 'abcdeAzxderfgtBwwsderfCderoiklopDikjhfc'; echo $text; echo "● preg_replace()使用後"; $text_repl = preg_replace('/[a-z]{2,}/', '**', $text); echo $text_repl; ?> |
● 実行結果
preg_replace()で正規表現を使用して対象の文字列を違う文字列へ置換しています。
今回は、「aからzの2文字以上からなる文字列」が置換対象のであるため、「abcdeAzxderfgtBwwsderfCderoiklopDikjhfc」が「**A**B**C**D**」となって表示されています。
まとめ
⚫︎ str_replace()とは対象の文字列を違う文字列に置換することができる関数である
⚫︎ str_replace()を使用するには下記の引数を指定する。
・対象の文字列(必須)
・置換する文字列(必須)
・置換前の文字列(必須)
・カウンタ(任意)
⚫︎ 対象の文字列が存在する場合にstr_replace()を使用すると「対象の文字列」を「置換する文字列」に変換された後の文字列を返す。
⚫︎ 対象の文字列が存在しない場合にstr_replace()を使用すると「置換前の文字列」をそのまま返す。
⚫︎ 対象の文字列が複数存在する場合にstr_replace()を使用すると全ての「対象の文字列」を「置換する文字列」に変換された後の文字列を返す。
⚫︎ str_replace()で置換回数をカウントするには引数にカウンタを指定する。
⚫︎ 複数の対象の文字列を違う文字列に置換するには繰り返し処理の中にstr_replace()を使用する。
⚫︎ str_replace()で対象の文字列を削除するには、置換後の文字列に「”(空文字)」を指定する。
⚫︎ str_replace()は文字列だけでなく、配列の要素も置換することができる。
⚫︎ 大小関係なく対象の文字列を違う文字列へ置換するにはstr_ireplace()を使用する。
⚫︎ 正規表現を使用して対象の文字列を違う文字列へ置換するにはpreg_replace()を使用する。