PHPで文字列を簡単に置換!その手法と活用例を5選で解説

PHPの文字列置換の具体的なコード例とその説明PHP
この記事は約8分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

PHPで文字列の置換を手軽に行う方法を学びたい方、あるいは既存の知識を深めたい方、お待たせしました!

この記事を読めば、PHPにおける文字列の置換方法について理解が深まり、独自のプログラムを書く際に役立てることができるようになります。

PHPで文字列の置換を行うには、主にstr_replace、substr_replace、およびpreg_replaceという三つの関数を用います。

それぞれの関数は一見似ていますが、使用するシチュエーションや使い方には微妙な違いがあります。

それぞれの基本的な使い方を学んだ後、実際のコードを見ていきましょう。

さらに、文字列置換が活きる具体的な例として、メールアドレスの置換、文章中の誤字脱字の修正、HTMLタグの置換、日付フォーマットの変更、パスワードのマスキングなど、5つの具体的な応用例をご紹介します。

それでは、PHPで文字列を置換する基本から見ていきましょう。

●PHPで文字列を置換する基本

PHPで文字列を置換する際には、str_replace、substr_replace、preg_replaceという三つの関数がよく用いられます。

それぞれについて基本的な使い方を説明します。

○str_replaceの基本的な使い方

str_replace関数は、指定した文字列を別の文字列に置換する機能を持っています。

<?php
$original = "Hello, world!";
$replaced = str_replace("world", "PHP", $original);
echo $replaced; // "Hello, PHP!"と表示されます。
?>

このコードでは、”Hello, world!”という文字列の中の”world”を”PHP”に置換しています。その結果、出力結果は”Hello, PHP!”となります。

○substr_replaceの基本的な使い方

substr_replace関数も文字列の一部を置換するための関数です。

ただし、この関数は置換位置と置換する長さを指定して使用します。

<?php
$original = "Hello, world!";
$replaced = substr_replace($original, "PHP", 7, 5);
echo $replaced; // "Hello, PHP!"と表示されます。
?>

このコードでは、”Hello, world!”という文字列の7文字目から5文字を”PHP”に置換しています。

その結果、出力結果は”Hello, PHP!”となります。

○preg_replaceの基本的な使い方

preg_replace関数は、正規表現を使用して文字列を置換するための関数です。

これにより、柔軟なパターンマッチングと置換が可能となります。

<?php
$original = "Hello, world!";
$replaced = preg_replace("/world/", "PHP", $original);
echo $replaced; // "Hello, PHP!"と表示されます。
?>

このコードでは、正規表現”/world/”を使って”Hello, world!”という文字列の中の”world”を”PHP”に置換しています。

その結果、出力結果は”Hello, PHP!”となります。

以上がPHPで文字列を置換するための基本的な関数の使い方です。

それぞれの関数は異なるシチュエーションや要件に対応するために存在していますので、適切に使い分けることが重要です。

●PHPで文字列を置換する応用例

これから、実際のPHPコードを用いて、具体的な文字列置換の応用例を5つご紹介します。

○サンプルコード1:メールアドレスの置換

こちらのコードでは、メールアドレス中のドメイン部分を一括で変更する処理を紹介します。

<?php
$emails = ["tanaka@example.com", "suzuki@example.com", "yamada@example.com"];
$replacedEmails = str_replace("@example.com", "@changed.com", $emails);
print_r($replacedEmails);
?>

この例では、str_replace関数を使って、配列に含まれる各メールアドレスのドメイン部分を”@changed.com”に一括で変更しています。

○サンプルコード2:文章中の誤字脱字の修正

次のコードは、文章中の特定の誤字脱字を修正する処理を示しています。

<?php
$text = "今日は晴れですが、明日は雪が降ります。しかし、あしたは晴れます。";
$correctedText = str_replace("あした", "明日", $text);
echo $correctedText;
?>

この例では、str_replace関数を使って、文章中の”あした”を正しい表記である”明日”に置換しています。

○サンプルコード3:HTMLタグの置換

HTMLタグの置換も、文字列置換の一つです。

こちらの例では、文章中の特定のHTMLタグを別のタグに置換します。

<?php
$html = "<div><b>bold text</b></div>";
$replacedHtml = str_replace("<b>", "<strong>", $html);
$replacedHtml = str_replace("</b>", "</strong>", $replacedHtml);
echo $replacedHtml;
?>

このコードでは、<b>タグを<strong>タグに、対応する閉じタグも同様に置換しています。

○サンプルコード4:日付フォーマットの変更

日付の表記フォーマットを変更することも、文字列の置換により可能です。

<?php
$date = "2023/05/24";
$replacedDate = str_replace("/", "-", $date);
echo $replacedDate; // "2023-05-24"と表示されます。
?>

このコードでは、日付の区切り文字をスラッシュからハイフンに変更しています。

○サンプルコード5:パスワードのマスキング

パスワードやクレジットカード番号などのセキュリティに関わる情報をマスクする際も、文字列置換を用いることができます。

<?php
$password = "password123";
$maskedPassword = substr_replace($password, str_repeat("*", strlen($password) - 4), 0, strlen($password) - 4);
echo $maskedPassword; // "******d123"と表示されます。
?>

このコードでは、substr_replace関数を使って、パスワードの前半部分をアスタリスクに置換し、末尾の4文字だけを表示しています。

●注意点と対処法

文字列を置換する際には、文字コードの問題や正規表現のエラーといった注意点があります。それぞれの問題とその対処法について説明します。

○文字コードの問題と対処法

文字列を置換する際、文字コードの違いにより予期しない結果が生じることがあります。

たとえば、UTF-8とShift-JISでは同じ日本語の文字でも表現が異なるため、それぞれの文字コードで文字列を置換すると異なる結果が得られます。

その対処法として、PHPのmb_convert_encoding関数を使用して、文字列の文字コードを揃える方法があります。

<?php
$text = "こんにちは、世界!";
$encodedText = mb_convert_encoding($text, 'UTF-8', mb_detect_encoding($text));
$replacedText = str_replace("世界", "ワールド", $encodedText);
echo $replacedText; // "こんにちは、ワールド!"と表示されます。
?>

このコードでは、mb_convert_encoding関数で文字列の文字コードをUTF-8に統一し、その後で文字列の置換を行っています。

○正規表現のエラーと対処法

正規表現を用いた文字列の置換にはpreg_replace関数を使用しますが、正規表現のパターンが誤っているとエラーが発生します。

エラーを避けるためには、正規表現のパターンを正しく記述することが重要です。

また、正規表現のパターンのエラーを発見するためには、preg_last_error関数を用いてエラーメッセージを表示することができます。

<?php
$text = "Hello, World!";
$pattern = "/world/i"; // "i"フラグは大文字小文字を無視する
$replacement = "Earth";
$replacedText = preg_replace($pattern, $replacement, $text);
if (preg_last_error() == PREG_NO_ERROR) {
    echo $replacedText;
} else {
    echo "エラー: 正規表現パターンが不正です。";
}
?>

このコードでは、正規表現の置換を試みた後にpreg_last_error関数を呼び出し、エラーがなければ置換後のテキストを、エラーがあればエラーメッセージを表示しています。

まとめ

この記事では、PHPで文字列を置換する方法とその応用例について詳しく説明しました。

基本的なstr_replace関数から、部分的な置換を行うsubstr_replace関数、正規表現を使ったpreg_replace関数まで、さまざまな関数を使ってどのように文字列の置換を行うかを学びました。

また、文字コードの問題や正規表現のエラーといった注意点とその対処法についても説明しました。

これらの知識を活用すれば、より正確かつ効率的に文字列の置換を行うことができるでしょう。

これらの方法をぜひ日々のプログラミングに活用してみてください。