フリーPHPスクリプト配布サイト。
正規表現を使用すると、文字列のパターンによる検索や置換を行えます。前回の条件分岐では「○○と等しければ」や「○○以上なら」という条件しか指定できませんでしたが、正規表現では「○○を含んでいれば」や「○○から始まる文字ならば」というような指定が可能になります。
正規表現を利用するには、preg_match 関数を使用します。具体的には、以下のような書式で比較を行います。
preg_match("/検索パターンを表す文字列/", 比較文字列)
これで「比較文字列 に 検索パターンを表す文字列 が含まれるか?」を調べることができます。
以下に、正規表現を使用したプログラムを記載します。
<?php
$string = "PHPサンプルプログラム。";
if (preg_match("/PHP/", $string)) {
echo "「PHP」が含まれています。";
} else {
echo "「PHP」が含まれていません。";
}
?>
これで「$string に PHP が含まれるか?」という比較になります。今は 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のいずれかが含まれる文字列です。";
}
?>
このような指定をすることができます。
正規表現を利用すれば「郵便番号の書式として正しいか?」や「メールアドレスの書式として正しいか?」といった比較もできるようになります。フォームメールや掲示板を作成したとき、入力内容チェック処理として使用することができます。