正規表現

トップ > PHP入門 > 正規表現

目次

広告

正規表現について

正規表現を使用すると、文字列のパターンによる検索や置換を行えます。前回の条件分岐では「○○と等しければ」や「○○以上なら」という条件しか指定できませんでしたが、正規表現では「○○を含んでいれば」や「○○から始まる文字ならば」というような指定が可能になります。

正規表現を利用するには、preg_match 関数を使用します。具体的には、以下のような書式で比較を行います。

preg_match("/検索パターンを表す文字列/", 比較文字列)

これで「比較文字列検索パターンを表す文字列 が含まれるか?」を調べることができます。

以下に、正規表現を使用したプログラムを記載します。

<?php

$string = "PHPサンプルプログラム。";

if (preg_match("/PHP/", $string)) {
  echo "「PHP」が含まれています。";
} else {
  echo "「PHP」が含まれていません。";
}

?>

これで「$stringPHP が含まれるか?」という比較になります。今は PHP が含まれているので、画面に 「PHP」が含まれています。 と表示されます。

正規表現は、これだけで本が書けてしまうほど複雑な機能ですが、少し使うだけならそれほど難しくありません。以下でいくつか例を紹介します。

特殊記号について

preg_match検索パターンを表す文字列 の初めに ^ を指定すると、「○○で始まる文字ならば」となります。具体的には、以下のようなプログラムになります。

<?php

if (preg_match("/^PHP/", $string)) {
  echo "「PHP」から始まる文字列です。";
}

?>

検索パターンは ^PHP となっています。これで「PHPから始まる文字列かどうか?」を調べることができます。

また、preg_match検索パターンを表す文字列 の最後に $ を指定すると、「○○で終わる文字ならば」となります。具体的には、以下のようなプログラムになります。

<?php

if (preg_match("/PHP$/", $string)) {
  echo "「PHP」で終わる文字列です。";
}

?>

検索パターンは PHP$ となっています。これで「PHPで終わる文字列かどうか?」を調べることができます。

一連の文字列との比較

preg_match は個別文字列との比較だけでなく、「0~9の数値が含まれていれば」や「アルファベットが含まれていれば」という比較を行うこともできます。

<?php

if (preg_match("/[abc]/", $string)) {
  echo "aかbかcのいずれかが含まれる文字列です。";
}

?>

[] で囲んで文字を指定すると、その中のいずれかに一致するかどうかを比較することができます。

また、文字は - で範囲を表すことができます。つまり

<?php

if (preg_match("/[a-z]/", $string)) {
  echo "a~zのいずれかが含まれる文字列です。";
}
if (preg_match("/[0-9]/", $string)) {
  echo "0~9のいずれかが含まれる文字列です。";
}

?>

このような指定をすることができます。

正規表現を利用すれば「郵便番号の書式として正しいか?」や「メールアドレスの書式として正しいか?」といった比較もできるようになります。フォームメールや掲示板を作成したとき、入力内容チェック処理として使用することができます。