PHPのreplaceで文字列置換する方法とは?str_ireplaceやsubstr_replaceについても紹介
- システム
エンジニア - 文字列の置き換えには、どんな構文がありますか?
- プロジェクト
マネージャー - ここでは4種類の置き換え構文を紹介していきます。
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.
|
- システム
エンジニア - 文字列置換方法も、実際ソースコードを見ていくとなかなか複雑ですね。
- プロジェクト
マネージャー - この4つの構文は使用する機会も多いので、ぜひコードを書いてマスタしてください。
まとめ
いかがでしたでしょうか。PHPにてreplaceで文字列置換する方法について説明しました。
str_replace:文字列置換、str_ireplace:大文字小文字を区別しない置換、substr_replace:部分文字列置換、preg_replace:正規表現置換について、ソースコードを交えて紹介しました。
ぜひご自身でPHPのソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)