PHP8正規表現入門・置換
正規表現の基礎とPCREの概要
PHP8 で導入された正規表現機能は、PCRE(Perl Compatible Regular Expressions)エンジンをベースにしています。PCRE は、正規表現構文を豊富にサポートし、パターンマッチの高速化と柔軟性を提供します。PHP の preg_match や preg_replace は、PCRE を内部で呼び出し、文字列の検索・置換を行います。
正規表現構文は、文字クラス、量化子、グループ化、アンカーなど多岐にわたります。例えば、/\d{3}-\d{4}/ は「3桁-4桁」の形式にマッチします。PHP8 では、Unicode サポートが強化され、/u フラグを付けることで多言語文字列も正しく扱えます。
preg_matchでのパターンマッチとバリデーション
入力データのバリデーションは、Web アプリケーションにおいて欠かせない処理です。preg_match を使えば、メールアドレスや電話番号などの形式チェックを簡潔に実装できます。
$email = 'example@example.com';
$pattern = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';
if (preg_match($pattern, $email)) {
echo '有効なメールアドレスです。';
} else {
echo '無効なメールアドレスです。';
}
上記例では、正規表現構文を用いてメールアドレスの形式を検証しています。preg_match はマッチした場合に 1 を返し、マッチしない場合は 0 を返します。これにより、入力値が期待通りかどうかを即座に判断できます。
preg_replaceでの文字列抽出と置換処理
文字列抽出と置換は、データ整形やログ解析などで頻繁に利用されます。preg_replace は、パターンにマッチした部分を別の文字列に置き換えるだけでなく、マッチした部分を取得することも可能です。
$text = '注文番号: 12345, 日付: 2026-01-09';
$pattern = '/注文番号:\s*(\d+)/';
$replacement = 'Order #$1';
$newText = preg_replace($pattern, $replacement, $text);
echo $newText; // 出力: Order #12345, 日付: 2026-01-09
この例では、preg_replace を使って「注文番号: 12345」を「Order #12345」に置換しています。キャプチャグループ (\d+) を利用して、数字部分を抽出し、$1 で参照しています。さらに、preg_replace は複数行に渡る文字列でも同様に機能します。
置換処理を行う際は、正規表現構文のエスケープに注意してください。例えば、ドット . は任意の文字を表すため、文字列として扱いたい場合は \. とエスケープする必要があります。
コメント
コメントを投稿