preg_match

(PHP 3>= 3.0.9, PHP 4 , PHP 5)

preg_match -- 正規表現検索を行う

説明

int preg_match ( string pattern, string subject [, array matches [, int flags]])

patternで指定した正規表現により subjectを検索します。

matchesが指定された場合、検索結果が代入されます。 $matches[0]はパターン全体にマッチしたテキストが代入され、 $matches[1]は最初の括弧付きのサブパターンにマッチしたテキスト が代入され、といったようになります。

flagsには以下のフラグを指定できます。

PREG_OFFSET_CAPTURE

このフラグが設定された場合、マッチする度に付随する文字列のオフ セットも返されます。これにより、返り値は配列となり、その各要素 はマッチした文字列を要素0subjectの中でのその文字列オフセットを要 素1とする配列となることに注意して下さい。 このフラグは、PHP 4.3.0 以降で利用可能です。

flagsパラメータは、PHP 4.3.0 以降で利用可能です。

preg_match()は、pattern がマッチした回数を返します。これは、0回(マッチせず)または1回となり ます。これは、最初にマッチした時点でpreg_match() は検索を止めるためです。逆にpreg_match_all()は、 subjectの終わりまで検索を続けます。 preg_match()は、エラーが発生した場合にFALSEを 返します。

例 1. 文字列"php"を探す

// パラメータのデリミタの後の"i"は大文字小文字を区別しない検索を示します
if (preg_match ("/php/i", "PHP is the web scripting language of choice.")) {
    print "A match was found.";
} else {
    print "A match was not found.";
}

例 2. 単語"web"を探す

// パターン内の\bは単語の境界を示します。このため、独立した単語の
// "web"にのみマッチし、"webbing" または "cobweb"のような単語の一
//  部にはマッチしません
if (preg_match ("/\bweb\b/i", "PHP is the web scripting language of choice.")) {
    print "マッチするものが一つみつかりました。";
} else {
    print "マッチするものはみつかりませんでした。";
}
if (preg_match ("/\bweb\b/i", "PHP is the website scripting language of choice.")) {
    print "マッチするものが一つみつかりました。";
} else {
    print "マッチするものはみつかりませんでした。";
}

例 3. URLからドメイン名を得る

// URLからホスト名を得る
preg_match("/^(http:\/\/)?([^\/]+)/i",
"http://www.php.net/index.html", $matches);
$host = $matches[2];
// ホスト名の最後の二つを得る
preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches);
echo "ドメイン名: ".$matches[0]."\n";
この例の出力は以下となります。
domain name is: php.net
preg_match_all(), preg_replace(), preg_split()も参照下さい。