ホームページ >バックエンド開発 >PHPチュートリアル >php: preg_match と preg_match_all の使用例の比較
PHP アプリケーションでは、正規表現は主に次の目的で使用されます:
•正規一致: 正規表現に基づいて対応するコンテンツを一致させる
•正規置換: 正規表現に基づいてコンテンツを一致させるそして replace
• 正規分割: 文字列を正規表現に従って分割します
PHP には 2 種類の正規表現関数があり、1 つは Perl 互換の正規表現関数、もう 1 つは POSIX 拡張正規表現関数です。両者に大きな違いはなく、Perl 互換の正規表現関数を使用することをお勧めします。そのため、以下では例として Perl 互換の正規表現関数を使用します。
デリミタ
Perl互換モードの正規表現関数では、その正規表現をデリミタ内に記述する必要があります。文字、数字、バックスラッシュ () 以外の任意の文字を区切り文字として使用できます。通常は / を区切り文字として使用します。具体的な使用方法については、以下の例を参照してください。
ヒント
正規表現は非常に強力ですが、通常の文字列処理関数で完了できる場合は、正規表現関数を使用しないようにしてください。正規表現の効率が大幅に低下するためです。通常の文字列処理関数について。
preg_match()
preg_match() 関数は正規表現のマッチングに使用され、成功した場合は 1 を返し、それ以外の場合は 0 を返します。
構文:
int preg_match( string pattern, string subject [, arraymatches ] )
パラメータの説明:
パラメータ | 説明 |
---|---|
パターン | 正規表現 |
subject | 取得した |
matches | と一致する必要があるオブジェクト。オプションで、一致結果を格納する配列$matches[0]には、パターン全体に一致するテキスト$matches[が含まれます。 1] には、最初にキャプチャされた括弧内のサブパターンに一致するテキストなどが含まれます。 |
例 1:
<?php if(preg_match("/php/i", "PHP is the web scripting language of choice.", $matches)){ print "A match was found:". $matches[0]; } else { print "A match was not found."; } ?>
ブラウザ出力:
A match was found: PHP
この例では、i を使用しているため、修飾子を使用すると、大文字と小文字を区別せずに PHP 内のテキストと一致します。
ヒント
preg_match() は、最初に一致が成功した後に照合を停止します。すべての結果を照合する場合、つまり、件名の最後まで検索する場合は、preg_match_all() 関数を使用する必要があります。
例 2、URL からホスト ドメイン名を取得します:
<?php // 从 URL 中取得主机名 preg_match("/^(http://)?([^/]+)/i","http://www.php.cn/index.html", $matches); $host = $matches[2]; // 从主机名中取得后面两段 preg_match("/[^./]+.[^./]+$/", $host, $matches); echo "域名为:{$matches[0]}"; ?>
ブラウザ出力:
ドメイン名は次のとおりです: php.cn
preg_match_all()
preg _match_all () function 正規表現のグローバル マッチングの場合、パターン全体が正常に一致した回数 (おそらくゼロ) が返され、エラーが発生した場合は FALSE が返されます。
構文:
int preg_match_all( string pattern, string subject, arraymatches [, int flags ] )
パラメータの説明:
パラメータ | |
---|---|
正規表現の式 | |
一致して取得する必要があるオブジェクト | |
一致結果を格納する配列 | |
オプションで、一致結果が一致に配置される順序を指定します使用可能なフラグは次のとおりです: |
|
<?php $str = "<pre class="brush:php;toolbar:false">学习php是一件快乐的事。
所有的phper需要共同努力!"; $kw = "php"; preg_match_all('/
([sS]*?)/',$str,$mat); for($i=0;$i
通常の一致する中国語の文字は、ページのエンコーディングによって若干異なります:
•GBK/GB2312 エンコーディング: [x80-xff>]+ または [xa1-xff]+
•UTF-8 エンコード: [x{4e00}-x{9fa5}]+/u
例: <?php
$str = "学习php是一件快乐的事。";
preg_match_all("/[x80-xff]+/", $str, $match);
//UTF-8 使用:
//preg_match_all("/[x{4e00}-x{9fa5}]+/u", $str, $match);
print_r($match);
?>
Array
(
[0] => Array
(
[0] => 学习
[1] => 是一件快乐的事。
)
)
以上がphp: preg_match と preg_match_all の使用例の比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。