カテゴリ: PHP 更新日: 2026/07/11

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開発において、ユーザーが入力した名前を表示したり、文章の一部を自動で書き換えたりする作業は日常茶飯事です。PHPには、こうした文字列を「結合する」「分割する」「検索する」「置換する(置き換える)」といった処理を、たった一行で実行できる便利な関数が豊富に用意されています。

例えば、プログラミング未経験の方でもイメージしやすいのが、「名前の差し替え」です。予約サイトやメール配信システムで、相手の名前に合わせてメッセージを変えるような仕組みも、PHPの文字列操作を使えば簡単に実現できます。


<?php
// 変数に名前を代入
$name = "山田";

// 文字列の中に変数を組み合わせてメッセージを作る(結合)
$message = "こんにちは、" . $name . "さん!";

echo $message; // 結果:こんにちは、山田さん!
?>

このように、あらかじめ決まった文章(テンプレート)の一部を動的に変更することは、Web開発の基本中の基本です。特に「文字列の置換(置き換え)」は、不適切な言葉を自動で伏せ字にしたり、URLの形式を整えたり、データベースから取り出した情報を表示用に加工したりと、非常に幅広いシーンで活用されます。これから紹介する関数をマスターすることで、Webサイトの表現力は一気に広がります。

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

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

プログラミングにおける「検索と置換」は、文章の中から特定の言葉を見つけ出し、別の言葉へ自動的に塗り替える作業です。例えば、100箇所ある「2025年」という表記を、一瞬で「2026年」に書き換えるといったイメージです。手作業では時間がかかりミスも起きやすいですが、プログラムなら正確かつ一瞬で完了します。

具体的な処理の流れは、以下の4ステップで考えます。

  • ① 探したい文字(検索対象): どの単語を置き換えたいか指定する
  • ② 新しい文字(置換後): どんな単語に変えたいか指定する
  • ③ 元の文章(対象データ): どこから探すのか、対象のテキストを指定する
  • ④ 実行と結果の受け取り: 実際に置き換えを行い、新しくなった文章を表示する

例えば、「こんにちは、田中さん」という挨拶の「田中」を「鈴木」に変える簡単なプログラムを見てみましょう。PHPでは str_replace という便利な関数を使って、直感的に記述できます。


// ① 置換したい文字
$search = "田中";
// ② 置き換える新しい文字
$replace = "鈴木";
// ③ 元の文章
$subject = "こんにちは、田中さん。";

// 文字列を置換して結果を受け取る
$result = str_replace($search, $replace, $subject);

// ④ 結果を表示する
echo $result; // 「こんにちは、鈴木さん。」と表示されます

このように、「何を探して」「何に変えるか」というルールを明確に決めることが、文字列操作の基本となります。初心者の方でも、この仕組みを理解しておけば、大量のデータ処理やテキストの自動修正がスムーズに行えるようになります。

3. str_replace関数の使い方:初心者でも分かる文字列置換の基本

3. str_replace関数の使い方:初心者でも分かる文字列置換の基本
3. str_replace関数の使い方:初心者でも分かる文字列置換の基本

PHPで特定の文字を別の文字に置き換えたいときに最もよく使われるのが、この str_replace 関数です。プログラミングが初めての方でも、「検索して置換する」というExcelやメモ帳のような操作をプログラムで行っていると考えるとイメージしやすいでしょう。

まずは、最もシンプルで分かりやすい基本の書き方を見ていきましょう。


<?php
// 1. 元になる文章を用意します
$text = "今日は良い天気です。";

// 2. str_replace("探したい文字", "置き換えたい文字", $対象の変数)
$new_text = str_replace("良い", "素晴らしい", $text);

// 3. 結果を表示します
echo $new_text;
?>

実行結果:


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

このサンプルでは、変数 $text の中にある「良い」という言葉を探し出し、それを「素晴らしい」に自動的に書き換えています。str_replace は、第1引数に「何を変えるか」、第2引数に「何に変えるか」、第3引数に「どこから探すか」を順番に指定するだけなので、初心者の方でも直感的に使いこなすことができます。

例えば、ユーザー名を表示する定型文の一部を書き換えたり、不要な記号を削除したりと、実際のWebサイト制作でも非常に頻繁に登場する便利なテクニックです。

4. str_replace を使った複数の文字列置換(配列による一括変換)

4. str_replace を使った複数の文字列置換(配列による一括変換)
4. str_replace を使った複数の文字列置換(配列による一括変換)

PHPの str_replace 関数の非常に強力な点は、「複数のキーワードを一度にまとめて置換できる」ことです。プログラミング初心者の方は、一つずつ置換処理を書かなければならないと考えがちですが、配列(データのリスト)を使うことで、コードをすっきりと短く、効率的に記述できます。

例えば、文章に含まれる複数の単語を、対応する別の単語へ一気に変換したい場合に便利です。以下のサンプルでは、プログラミング未経験の方でも分かりやすいよう、文章の中の特定のキーワードをまとめて置き換えています。


<?php
// 置換元の文章
$text = "今日は良い天気です。外に出て遊びましょう。";

// 探したい単語をリスト(配列)にする
$search = ["良い", "天気", "遊び"];

// 置き換え後の単語をリスト(配列)にする
$replace = ["素晴らしい", "快晴", "散歩し"];

// まとめて置換を実行!
$new_text = str_replace($search, $replace, $text);

echo $new_text;
?>

このコードを実行すると、次のような結果が表示されます。


今日は素晴らしい快晴です。外に出て散歩しましょう。

この仕組みのポイントは、$search 配列の1番目(良い)が $replace 配列の1番目(素晴らしい)に対応し、2番目が2番目へ……という順序で処理される点です。これにより、大量の置換ルールがあっても str_replace を1回呼び出すだけで済むため、処理スピードが速く、メンテナンスもしやすい「質の高いコード」になります。

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

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

PHPで「特定の文字」ではなく「特定のパターン」を見つけて書き換えたいときに欠かせないのが、preg_replace関数です。単純な文字の置き換えを行うstr_replaceとは異なり、正規表現(文字の並び方のルール)を用いることで、複雑な条件での一括置換が可能になります。

プログラミング未経験の方でも分かりやすい例として、「文章の中から数字だけを探して、プライバシー保護のために伏せ字(*)に変える」という処理を見てみましょう。


<?php
// 置換したい元の文章
$text = "お問い合わせ番号は 090-1234-5678 です。";

// 「0から9の数字」というパターンを指定して「*」に置き換える
// /[0-9]/ という書き方が「数字のどれか1文字」という正規表現です
$new_text = preg_replace("/[0-9]/", "*", $text);

// 結果を表示
echo $new_text;
?>

このコードを実行すると、次のような結果が得られます。


お問い合わせ番号は ***-****-**** です。

ここで使っている /[0-9]/ が正規表現と呼ばれるものです。スラッシュ(/)で囲まれた部分が「探し出すルール」を表しており、この場合は「0から9までの数字なら何でも対象にする」という意味になります。

このように、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 を活用すれば、特定の文字列をルールに基づいて置換することが可能です。

まとめ

まとめ
まとめ

PHPで文字列を扱う場面は、本当にいろいろなところに登場します。文章をただ表示するだけでなく、ユーザーが入力した内容を確認したり、不要な単語を取り除いたり、特定の情報だけを加工したりと、実務でもよく利用される処理です。そして、その中心にあるのが今回学んだ置換機能です。文章の中の決まった単語を置き換える場面は、掲示板、コメント機能、お問い合わせフォーム、プロフィール編集、メール送信システムなど、日常的な開発の中で必ずと言って良いほど登場します。 PHPでは、単純な置換を担当するstr_replaceや、大文字小文字を区別せずに変換できるstr_ireplace、さらに複雑なパターンに対応したpreg_replaceという関数を使うことで、始めたばかりの人でも意外と簡単に文字列の処理が可能になっています。文章を加工したり、NGワードを伏せ字にしたり、電話番号やメールアドレスをマスキングしたりなど、さまざまな用途で応用することができます。また、配列として複数の検索ワードを一度に置換することができるため、長いテキストであっても効率よく処理できます。 文章には小さな違いがとても多く、大文字と小文字が混ざっているだけでマッチしないこともあります。しかし、str_ireplaceなら気にせず処理できるので、より柔軟な開発が可能です。一方で、数字、メール、記号、ひらがな、カタカナ、特定の並び方など、単純な検索だけでは拾えないようなパターンを扱う場合には、preg_replaceがとても役に立ちます。特に、正規表現を使いこなすことで、数文字だけ残して他を伏せ字にしたり、「ひらがなだけ削除」「数字だけ変換」「特定の長さの文字列だけ抽出」ということまで簡単にできます。 例えば、ユーザーのメールアドレスをそのまま表示してしまうと、スパムメールの原因になってしまうことがあります。そんな時に、preg_replaceを使って伏せ字にして安全に表示することができます。こうした細かい処理は、ユーザーにとって安心できるサービスを作るために欠かせません。さらに、文章の置換処理は、テンプレートの差し替えにも役立ちます。「{{name}}」といったタグを実際のユーザー名に置き換える処理は、PHPで最もよく使われる機能のひとつです。こうした場面でもstr_replaceを使うことで、テンプレートエンジンのような仕組みが簡単に作れます。 また、ひとつの文字列だけでなく、複数の単語をまとめて変換できる点もとても便利です。文章に多くの単語が書かれていても、配列を使うことでまとめて変換できます。これにより、長いテキストでも効率よく加工することができ、簡単なNGワードフィルターや文章整形ツールにも応用できます。もし正規表現を学び始めたばかりでも、preg_replaceを触りながら覚えると、徐々に慣れていきます。「文字列を検索して置換する」という発想は非常にシンプルですが、活用の幅は想像以上に広いものです。 今回の内容を振り返ると、PHPでの文字列処理は難しい印象よりも、実際に手を動かしてみることで理解しやすくなる分野です。Web開発、フォーム入力のチェック、NGワード処理、マスキング、テンプレート処理、システムの表示内容の変更など、現場で頻繁に活躍します。こうした基本をしっかり身につけておけば、さまざまな機能を作るときに役立ちます。今後さらにレベルアップして、正規表現を使った細かいテキスト処理なども経験すると、文章の自動整形やログ処理などにも応用できる幅が広がります。

サンプル:文章中のメールを自動マスキングする応用例

よくある実践例として、ユーザーが入力したメールアドレスの一部を隠す処理があります。


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

この処理によって以下のように表示でき、個人情報を守りながら見せることが可能です。


sam***@example.com

文字列処理の技術は、サービスの安全性や使いやすさにも直接影響するため、非常に重要です。文章に含まれる情報を加工し、必要なところだけを取り出したり、見せたくない部分だけを隠したりといったことが自然に行えます。こうした工夫ができると、ただ動くだけではなく、配慮の行き届いたプログラムを作れるようになっていきます。文字列の置換は、どの言語でも必ず登場する基本機能ですが、PHPでは特に簡単に扱えるため、初心者でも使いやすい点が魅力です。

先生と生徒の振り返り会話

生徒

「文章の置換って少し難しそうな印象でしたが、実際に書いてみると意外と簡単なんですね。」

先生

「そうなんです。特にstr_replaceは初心者でも扱いやすく、作りたい機能にすぐ使えます。まずはここから始めるのがおすすめです。」

生徒

「preg_replaceは正規表現が必要なので難しいと思っていたんですが、数字を全部伏せ字にする例を見たら、どんな仕組みなのか理解できました!」

先生

「正規表現は最初は難しく感じますが、目的が決まっていれば必要な部分だけ覚えれば十分です。徐々に慣れていくと、いろいろなテキスト操作ができるようになりますよ。」

生徒

「メールの伏せ字やNGワードの置換など、現実のサービスでも使えそうですね!」

先生

「その通りです。文章の置換処理ができるようになると、Webサービスの安全性や使いやすさにもつながります。これからもたくさんの場面で役に立ちますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPで文字列を置換するにはどの関数を使えばいいですか?

PHPでは文字列を置換するためにstr_replaceやpreg_replaceといった関数を使うのが一般的です。str_replaceは単純な文字列置換、preg_replaceは正規表現による置換に使います。

str_replaceとpreg_replaceの違いは何ですか?

str_replaceは文字列をそのまま指定して置換しますが、preg_replaceは正規表現を使って特定のパターンに一致する文字列を置換できます。単純な場合はstr_replace、複雑なパターンにはpreg_replaceが適しています。

PHPのstr_replaceで複数の文字列を一度に置き換えることはできますか?

はい、str_replaceでは検索対象や置換後の文字列を配列として渡すことで、複数の単語を一括で置換することができます。
コメント
コメント投稿は、ログインしてください

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

PHP の文字列操作の記事一覧へ
新着記事
New1
PHP
PHPでファイルの存在確認・削除・移動を行う方法!初心者向けにfile_exists・unlink・renameを解説
New2
Python
Pythonでネットワークスキャナーを作る方法!Scapy入門ガイド(初心者向け)
New3
ChatGPT
ChatGPTでPythonのバグを見つける方法!初心者が確認すべきチェックポイント
New4
Python
PythonでICMP(Ping)を送信する方法を徹底解説!subprocessとscapyでネットワーク確認
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.2
Java&Spring記事人気No2
ChatGPT
ChatGPTでPythonコード作成とは?初心者向けに使い方・メリット・注意点を徹底解説
No.3
Java&Spring記事人気No3
Python
PythonでAPIリクエストを送信する方法を完全解説!requestsライブラリで簡単API通信
No.4
Java&Spring記事人気No4
Python
Pythonのrequestsライブラリ完全入門!HTTPリクエストの送り方を初心者向けにやさしく解説
No.5
Java&Spring記事人気No5
Python
Pythonの非同期HTTPリクエスト(asyncio + aiohttp)完全ガイド!初心者でもわかるネットワークプログラミング
No.6
Java&Spring記事人気No6
Python
Pythonのtimedeltaで日付の加算・減算をしよう!初心者でもわかる時間操作の基本
No.7
Java&Spring記事人気No7
Python
Pythonでzip圧縮・解凍する方法を徹底解説!初心者でもわかるzipfileモジュールの使い方
No.8
Java&Spring記事人気No8
PHP
PHPの変数の命名規則とベストプラクティスをやさしく解説!初心者向け完全ガイド