PHPで正規表現を使って複雑な文字列を置換する方法を、preg_replaceとmb_ereg_replaceの使い方を中心に解説します。

PHPで複雑な文字列を正規表現を使って置換する方法について教えてください。



PHPのpreg_replaceとmb_ereg_replaceを使って複雑な文字列を置換する方法を解説します。具体的なサンプルプログラムを使って、分かりやすく説明しますね。
正規表現とは
正規表現とは、文字列のパターンマッチングを行うための手法です。特定の文字列パターンを検索、置換、抽出する際に非常に便利で、プログラミングやテキスト処理に広く利用されています。正規表現を使うことで、例えば特定の単語や数字のパターン、特定の形式に一致する文字列などを簡単に見つけたり置き換えたりすることができます。
例:
- メールアドレスの検出:
‘/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}/’ - 電話番号のフォーマット:
‘/\d{3}-\d{3}-\d{4}/’
正規表現はその柔軟性と強力さゆえに、初心者には少し難しく感じるかもしれませんが、一度習得すると多くのテキスト操作で非常に役立ちます。
preg_replaceの使い方
preg_replaceは、PHPで正規表現を使って文字列を置換するための関数です。この関数を使うことで、指定したパターンに一致する部分を新しい文字列に置き換えることができます。
基本構文
preg_replaceの基本構文は以下の通りです:
preg_replace(パターン, 置換文字列, 対象文字列, [置換回数], [配列])
- パターン:検索する正規表現パターン。
- 置換文字列:パターンに一致した部分を置き換える文字列。
- 対象文字列:検索・置換対象となる文字列。
- 置換回数(オプション):置換を行う最大回数。指定しない場合はすべて置換されます。
- 配列(オプション):置換後の配列を取得するための配列。
使用例 数字を特定の文字列に置換する
電話番号の数字部分を「数字」という文字列に置き換える例を見てみましょう。
$text = '電話番号は123-456-7890です。';
$pattern = '/\d+/'; // 数字を表す正規表現パターン
$replacement = '数字';
$result = preg_replace($pattern, $replacement, $text);
echo $result; // 結果:電話番号は数字-数字-数字です。
使用例 特定のフォーマットに一致する文字列を置換する
次に、電話番号の形式を「XXX-XXX-XXXX」に置き換える例を示します。
$text = '連絡先は123-456-7890です。';
$pattern = '/\d{3}-\d{3}-\d{4}/'; // 電話番号の形式を表す正規表現パターン
$replacement = 'XXX-XXX-XXXX';
$result = preg_replace($pattern, $replacement, $text);
echo $result; // 結果:連絡先はXXX-XXX-XXXXです。
HTMLタグを削除する
HTMLタグをすべて削除する例を見てみましょう。
$html = '<p>これは<b>重要な</b>文章です。</p>';
$pattern = '/<[^>]+>/'; // HTMLタグを表す正規表現パターン
$replacement = '';
$result = preg_replace($pattern, $replacement, $html);
echo $result; // 結果:これは重要な文章です。
mb_ereg_replaceの使い方
mb_ereg_replaceは、マルチバイト文字列を扱うためのPHP関数で、特に日本語などのマルチバイト文字を含む文字列に対して正規表現を使用して置換を行う場合に便利です。以下に、mb_ereg_replaceの基本的な使い方を説明します。
基本構文
mb_ereg_replaceの基本構文は以下の通りです:
mb_ereg_replace(パターン, 置換文字列, 対象文字列, [オプション])
- パターン:検索する正規表現パターン。
- 置換文字列:パターンに一致した部分を置き換える文字列。
- 対象文字列:検索・置換対象となる文字列。
- オプション(オプション):検索や置換の動作を制御するオプション。
使用例 特定の文字列を置換する
正規表現を使って、特定の文字列を別の文字列に置き換える例を見てみましょう。
$text = 'こんにちは、正規表現の世界へようこそ。';
$pattern = '正規表現'; // 検索する文字列
$replacement = 'regex';
$result = mb_ereg_replace($pattern, $replacement, $text);
echo $result; // 結果:こんにちは、regexの世界へようこそ。
使用例 日本語の文中の特定の単語を置換する
次に、文中の特定の日本語の単語を置き換える例を示します。
$text = '今日は良い天気ですね。明日も良い天気だといいですね。';
$pattern = '良い天気'; // 検索する日本語の単語
$replacement = '晴れ';
$result = mb_ereg_replace($pattern, $replacement, $text);
echo $result; // 結果:今日は晴れですね。明日も晴れだといいですね。
まとめ
- 正規表現とは:文字列のパターンマッチングを行うための手法。検索、置換、抽出に利用される。
- preg_replaceの使い方:
- 数字や特定のフォーマットの文字列を置換。
- HTMLタグの削除など、さまざまな用途に利用。
- 例:電話番号の形式を「XXX-XXX-XXXX」に置換、HTMLタグの削除。
- mb_ereg_replaceの使い方:
- マルチバイト文字列(日本語など)を扱う置換に最適。
- 大文字小文字を区別せずに置換可能。
- 例:日本語の文字列を置換、大小文字区別無視の置換。



正規表現を使った文字列置換は、PHPプログラミングにおいて非常に強力なツールです。preg_replaceとmb_ereg_replaceを使い分けることで、さまざまな文字列操作が可能になります。
まずは簡単な例から始めて、徐々に複雑なパターンに挑戦してみましょう。