.NET開発者のためのブログメディア

PHPのreplaceで文字列置換する方法とは?str_ireplaceやsubstr_replaceについても紹介
目次
PHPのreplaceで文字列置換する方法を紹介します!
今回は、PHPにてreplaceで文字列置換する方法について説明します。
ここでは、以下について紹介します。
str_replace:文字列置換
str_ireplace:大文字小文字を区別しない置換
substr_replace:部分文字列置換
preg_replace:正規表現置換
PHPでの文字列置換に興味のある方はぜひご覧ください。
基本的な使い方
PHPでの文字列置換の基本的な使い方を紹介します。文法は以下です。
1 |
str_replace($from, $to, $str); |
$str内の$fromを$toに置換します。また、第4引数を指定すると、置換回数を取得できます。
それでは、実際のソースコードを見てみましょう。
1 2 3 4 5 |
$str = ""Hello world. Hello world. Hello world.""; echo ""置換前:"" . $str . ""\n""; $str = str_replace(""Hello"", ""Hi"", $str, $times); echo ""置換後:"" . $str . ""\n""; echo ""置換回数:"" . $times . ""\n""; |
実行結果は以下のようになります。
1 2 3 |
置換前:Hello world. Hello world. Hello world. 置換後:Hi world. Hi world. Hi world. 置換回数:3 |
配列の置換
PHPでは、str_replaceを使用して配列も置換できます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
$array = array( 'Hello world.', 'Hello world.', 'Hello world.'); $from = 'Hello'; $to = 'Hi'; echo ""置換前\n""; var_dump($array); $array = str_replace($from, $to, $array); echo ""置換後\n""; var_dump($array); |
実行結果は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
置換前 array(3) { [0]=> string(12) ""Hello world."" [1]=> string(12) ""Hello world."" [2]=> string(12) ""Hello world."" } 置換後 array(3) { [0]=> string(9) ""Hi world."" [1]=> string(9) ""Hi world."" [2]=> string(9) ""Hi world."" } |
複数置換
PHPではstr_replaceを使用して、複数条件で置換することもできます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 |
$str = ""Hello world.""; // 「Hello」を「hoge」に置換、「world」を「piyo」に置換 $from = array('Hello','world'); $to = array('hoge','piyo'); echo ""置換前:"" . $str . ""\n""; $str = str_replace($from, $to, $str); echo ""置換後:"" . $str . ""\n""; |
実行結果は以下のようになります。
1 2 |
置換前:Hello world. 置換後:hoge piyo. |
大文字小文字を区別しない置換 str_ireplace
PHPではstr_ireplaceを使用すると、大文字小文字を区別しない置換ができます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 |
$str = ""Hello world.""; echo ""置換前:"" . $str . ""\n""; // 大文字小文字を区別しない置換 $str = str_ireplace(""hello"", ""Hi"", $str); echo ""置換後:"" . $str . ""\n""; |
実行結果は以下のようになります。
1 2 |
置換前:Hello world. 置換後:Hi world. |
文字列の一部置換 substr_replace
PHPではsubstr_replaceを使用すると、文字列の一部置換ができます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$str = ""Hello world""; echo ""置換前:"" . $str . ""\n\n""; echo ""置換後:\n""; /* $strをhogeに置換 */ echo substr_replace($str, ""hoge"", 0) . ""\n""; // hoge echo substr_replace($str, ""hoge"", 0, strlen($str)) . ""\n""; // hoge /* 7文字目以降をhogeに置換 */ echo substr_replace($str, ""hoge"", 6) . ""\n""; // Hello hoge echo substr_replace($str, ""hoge"", 6, strlen($str)) . ""\n""; // Hello hoge /* 7文字目以降を削除 */ echo substr_replace($str, """", 6) . ""\n""; // Hello echo substr_replace($str, """", 6, strlen($str)) . ""\n""; // Hello |
実行結果は以下のようになります。
1 2 3 4 5 6 7 8 9 |
置換前:Hello world 置換後: hoge hoge Hello hoge Hello hoge Hello Hello |
正規表現での置換 preg_replace
PHPではpreg_replaceを使用すると、正規表現での置換ができます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
$str = ""Hello world""; echo ""置換前:"" . $str . ""\n\n""; echo ""置換後:\n""; /* oを*に置換 */ echo preg_replace(""/o/"", ""*"", $str) . ""\n""; // Hell* w*rld /* oまたはlを*に置換 */ echo preg_replace(""/[ol]/"", ""*"", $str) . ""\n""; // He*** w*r*d /* 先頭のアルファベットを*に置換 */ echo preg_replace(""/^\w*/"", ""*"", $str) . ""\n""; // * world |
実行結果は以下のようになります。
1 2 3 4 5 6 |
置換前:Hello world 置換後: Hell* w*rld He*** w*r*d * world |
str_replace_first
複数一致する場合、最初の一致のみを置換することもできます。preg_replaceを使用します。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function str_replace_first($from, $to, $content) { // /$from/という置換用の文字列を作成 $from = '/' . preg_quote($from, '/') . '/'; // preg_replaceで一つだけ置換 return preg_replace($from, $to, $content, 1); } $str = ""Hello world. Hello world. Hello world.""; echo ""置換前:"" . $str . ""\n""; $str = str_replace_first(""Hello"", ""Hi"", $str); echo ""置換後:"" . $str . ""\n""; |
実行結果は以下のようになります。
1 2 |
置換前:Hello world. Hello world. Hello world. 置換後:Hi world. Hello world. Hello world. |
str_replace_last
複数一致する場合、最後の一致のみを置換することもできます。substr_replaceを使用します。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function str_replace_last($from, $to, $content) { // $fromが最後に登場する位置を取得 $pos = strrpos($content, $from); if($pos !== false) { // 部分文字列置換で、最後の一致を置換 $content = substr_replace($content, $to, $pos, strlen($from)); } return $content; } $str = ""Hello world. Hello world. Hello world.""; echo ""置換前:"" . $str . ""\n""; $str = str_replace_last(""Hello"", ""Hi"", $str); echo ""置換後:"" . $str . ""\n""; |
実行結果は以下のようになります。
1 2 |
置換前:Hello world. Hello world. Hello world. 置換後:Hello world. Hello world. Hi world. |
まとめ
いかがでしたでしょうか。PHPにてreplaceで文字列置換する方法について説明しました。
str_replace:文字列置換、str_ireplace:大文字小文字を区別しない置換、substr_replace:部分文字列置換、preg_replace:正規表現置換について、ソースコードを交えて紹介しました。
ぜひご自身でPHPのソースコードを書いて、理解を深めてください。