フリー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のいずれかが含まれる文字列です。";
}
?>
このような指定をすることができます。
正規表現を利用すれば「郵便番号の書式として正しいか?」や「メールアドレスの書式として正しいか?」といった比較もできるようになります。フォームメールや掲示板を作成したとき、入力内容チェック処理として使用することができます。