説明
int
preg_match
( string pattern, string subject [, array matches])
pattern
で指定した正規表現により
subject
を検索します。
matches
が指定された場合、検索結果が代入されます。 $matches[0]はパターン全体にマッチしたテキストが代入され、
$matches[1]は最初の括弧付きのサブパターンにマッチしたテキスト が代入され、といったようになります。
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 "マッチするものはみつかりませんでした。";
}
|
|
例 3URLからドメイン名を得る
// URLからホスト名を得る
preg_match("/^(http:\/\/)?([^\/]+)/i",
"http://www.php.net/index.html", $matches);
$host = $matches[2];
// ホスト名の最後の二つを得る
preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches);
echo "ドメイン名: ".$matches[0]."\n";
|
|
この例の出力は以下となります。
preg_match_all()
,
preg_replace()
,
preg_split()
も参照下さい。