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
このフラグが設定された場合、マッチする度に付随する文字列のオフ
セットも返されます。これにより、返り値は配列となり、その各要素
はマッチした文字列を要素0、
subjectの中でのその文字列オフセットを要
素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";
|
|
この例の出力は以下となります。
preg_match_all(),
preg_replace(),
preg_split()も参照下さい。