カテゴリ: PHP 更新日: 2025/05/29

PHP の文字列を検索・置換する方法(str_replace, preg_replace)

PHP の文字列を検索・置換する方法(str_replace, preg_replace)
PHP の文字列を検索・置換する方法(str_replace, preg_replace)

新人と先輩の会話形式で理解しよう

新人

「PHPで文字列の中の特定の単語を別の単語に置き換える方法ってありますか?」

先輩

「PHPでは、文字列を置換するためにstr_replacepreg_replaceといった関数を使うことができます。」

新人

「なるほど、str_replacepreg_replaceの違いって何ですか?」

先輩

str_replaceは単純な文字列の置換に使い、preg_replaceは正規表現を使ってより高度な置換ができます。それぞれ詳しく解説していきますね!」

-

1. PHPの文字列操作とは?

1. PHPの文字列操作とは?
1. PHPの文字列操作とは?

PHPは文字列を扱うのが得意な言語で、様々な関数が用意されています。文字列を結合したり、分割したり、検索したり、置換したりといった処理が簡単に行えます。

特に、文字列の一部を別の文字列に置き換えることは、Web開発ではよく使われる操作です。例えば、Webページのテンプレートの中で動的な値を差し替えたり、不適切な単語を伏せ字にする場合などに利用されます。

2. 文字列の検索と置換の基本的な考え方

2. 文字列の検索と置換の基本的な考え方
2. 文字列の検索と置換の基本的な考え方

文字列の検索と置換は、以下の流れで行われます。

  • ① 置換したい単語を指定する
  • ② 置き換える単語を指定する
  • ③ 置換する対象の文字列を指定する
  • ④ 置換結果を取得する

PHPでは、これを簡単に実現するための関数として str_replace が用意されています。

3. str_replace 関数の使い方(簡単な例)

3. str_replace 関数の使い方(簡単な例)
3. str_replace 関数の使い方(簡単な例)

str_replace 関数を使うと、指定した文字列を別の文字列に置き換えることができます。基本的な使い方は以下の通りです。


<?php
$text = "今日は良い天気です。";
$new_text = str_replace("良い", "素晴らしい", $text);
echo $new_text;
?>

このコードを実行すると、以下のように出力されます。


今日は素晴らしい天気です。

このように、 str_replace を使うことで簡単に文字列の置換ができます。

4. str_replace を使った複数の文字列置換

4. str_replace を使った複数の文字列置換
4. str_replace を使った複数の文字列置換

str_replace は、複数の単語を一度に置換することも可能です。置換対象の単語を配列として指定することで、一括で置換することができます。

例えば、文章中の「良い」「天気」を、それぞれ「素晴らしい」「快晴」に置き換える場合は、次のように記述します。


<?php
$text = "今日は良い天気です。";
$search = ["良い", "天気"];
$replace = ["素晴らしい", "快晴"];
$new_text = str_replace($search, $replace, $text);
echo $new_text;
?>

このコードを実行すると、以下のように出力されます。


今日は素晴らしい快晴です。

このように、str_replace を使えば複数の単語を一括で置換できるため、効率的に文字列の置換を行うことができます。

-

5. preg_replace の基本的な使い方(正規表現を使った置換)

5. preg_replace の基本的な使い方(正規表現を使った置換)
5. preg_replace の基本的な使い方(正規表現を使った置換)

preg_replace は、正規表現を使って文字列を検索し、置換するための関数です。str_replace とは異なり、特定のパターンに一致する文字列を置換できます。

例えば、文中の「数字(0~9)」をすべて「*」に置き換える場合は、次のように記述します。


<?php
$text = "電話番号は 090-1234-5678 です。";
$new_text = preg_replace("/[0-9]/", "*", $text);
echo $new_text;
?>

このコードを実行すると、以下のように出力されます。


電話番号は ***-****-**** です。

このように、preg_replace を使うと、特定の文字パターンを指定して、簡単に置換することができます。

6. preg_replace でできる高度な文字列置換(具体例)

6. preg_replace でできる高度な文字列置換(具体例)
6. preg_replace でできる高度な文字列置換(具体例)

正規表現を利用すると、より高度なパターンで文字列を置換できます。例えば、文章中の「ひらがな」だけを削除する場合は、次のように記述します。


<?php
$text = "今日はとても良い天気ですね。";
$new_text = preg_replace("/[ぁ-ん]/u", "", $text);
echo $new_text;
?>

このコードを実行すると、以下のように出力されます。


今日良天気。

このように、preg_replace を使うことで、特定の文字種のみを削除したり置換したりすることが可能になります。

7. str_replace と preg_replace の違い(使い分けのポイント)

7. str_replace と preg_replace の違い(使い分けのポイント)
7. str_replace と preg_replace の違い(使い分けのポイント)

PHPで文字列を置換する方法として、str_replacepreg_replace の2つの関数があります。それぞれの違いや使い分けのポイントを見ていきましょう。

str_replace の特徴

  • 単純な文字列の置換に適している
  • 正規表現を使用せずに簡単に置換できる
  • 複数の文字列をまとめて置換することも可能

preg_replace の特徴

  • 正規表現を使って高度なパターンの置換が可能
  • 特定のルールに一致する文字列を一括で置換できる
  • メールアドレスのマスキングや数字の削除など、複雑な処理が得意

例えば、特定の単語を別の単語に単純に置換する場合は str_replace を使い、文中の特定のパターンをすべて置換したい場合は preg_replace を使うのが適切です。

8. str_ireplace(大文字・小文字を区別せずに置換)の使い方

8. str_ireplace(大文字・小文字を区別せずに置換)の使い方
8. str_ireplace(大文字・小文字を区別せずに置換)の使い方

str_replace は大文字・小文字を区別して置換しますが、大文字・小文字を区別せずに置換したい場合は str_ireplace を使用します。

例えば、「hello」を「こんにちは」に置き換える際、大文字と小文字の違いを無視したい場合は以下のように書きます。


<?php
$text = "Hello, world! hello, PHP!";
$new_text = str_ireplace("hello", "こんにちは", $text);
echo $new_text;
?>

このコードを実行すると、以下のように出力されます。


こんにちは, world! こんにちは, PHP!

このように str_ireplace を使えば、大文字と小文字の違いを気にせずに文字列を置換することができます。

9. 実践!文字列置換のサンプルコード(応用編)

9. 実践!文字列置換のサンプルコード(応用編)
9. 実践!文字列置換のサンプルコード(応用編)

最後に、str_replacepreg_replace を活用した実践的なサンプルコードを紹介します。

NGワードの伏せ字変換

Webサービスなどでは、不適切な単語を伏せ字にする処理が必要になることがあります。その場合、以下のようなコードを使うことができます。


<?php
$text = "これはとても悪い言葉です。";
$ng_words = ["悪い", "言葉"];
$replace_words = ["○○", "△△"];
$new_text = str_replace($ng_words, $replace_words, $text);
echo $new_text;
?>

このコードを実行すると、以下のように出力されます。


これはとても○○△△です。

メールアドレスのマスキング

ユーザーのプライバシーを保護するために、メールアドレスの一部を伏せ字にすることがあります。その場合、以下のように preg_replace を使用できます。


<?php
$email = "example@gmail.com";
$masked_email = preg_replace("/(.{2}).+(@.+)/", "$1***$2", $email);
echo $masked_email;
?>

このコードを実行すると、以下のように出力されます。


ex***@gmail.com

このように、preg_replace を活用すれば、特定の文字列をルールに基づいて置換することが可能です。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
Pythonのエラーメッセージの読み方!よくあるエラーと解決方法
PHPの関数(function)の基本を完全ガイド!初心者でもわかる使い方
Pythonの条件式でNoneを判定する方法!is None vs == None の違い
Pythonのpass文とは?一時的なコードブロックをスキップする方法
人気記事
No.1
Java&Spring記事人気No1
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.2
Java&Spring記事人気No2
PHPとは?初心者向けにわかりやすく解説
No.3
Java&Spring記事人気No3
PHPの関数(function)の基本を完全ガイド!初心者でもわかる使い方
No.4
Java&Spring記事人気No4
PHP の文字列の基本操作(連結・切り出し・長さ)の使い方
-