ホームページ  >  記事  >  バックエンド開発  >  PHP preg_match 正規表現の使用_PHP チュートリアル

PHP preg_match 正規表現の使用_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:03:33871ブラウズ

PHP の preg_match() 関数は、正規表現を実行するためによく使用される関数です。preg_match の使い方を詳しく紹介します。 ​

機能の使い方

int preg_match_all (文字列パターン、文字列件名、配列一致 [, int フラグ] )

例1

コードは次のとおりです コードをコピー

preg_match_all ("|<[^>]+>(.*)]+>|U","例:

これはテストです ",$out, PREG_SET_ORDER);
print $out[0][0].", ".$out[0][1]."n";
print $out[1][0].", ".$out[1][1]."n";
?>

この例では次のように出力されます:
例: 、例:

これはテストです 、 これはテストです

例 2

URLからドメイン名を抽出します

コードは次のとおりです コードをコピー

//URLからホスト名を取得
preg_match("/^(http://)?([^/]+)/i", "http://www.***.net/index.html", $matches);
$host = $matches[2];
// ホスト名から最後の 2 つのセグメントを取得します
preg_match("/[^./]+.[^./]+$/", $host, $matches);
echo "ドメイン名は: {$matches[0]}n";
?>

この例では次のように出力されます:

ドメイン名は: PPP.ネット

preg_match 文字列の長さの問題

preg_match は、対象のコンテンツを抽出するために通常のルールを使用します。生死にかかわる問題があり、コードは徹底的にテストされます。

後で、PHP の preg_match には文字列の長さ制限があるのではないかと思いましたが、案の定、「pcre.backtrack_limit」の値はデフォルトで 100000 にのみ設定されていることがわかりました。

解決策:

コードは次のとおりです コードをコピー
ini_set('pcre.backtrack_limit', 999999999);

注: このパラメータは、PHP 5.2.0 バージョン以降で使用できます。

さらに、: pcre.recursion_limit について話しましょう

pcre.recursion_limit は PCRE の再帰制限です。この項目を大きな値に設定すると、すべてのプロセスの使用可能なスタックが消費され、最終的に PHP がクラッシュします。

設定を変更して制限することもできます:

コードは次のとおりです コードをコピー
ini_set('pcre.recursion_limit', 99999);

実際のプロジェクト アプリケーションでは、メモリを制限するのが最善です: ini_set('memory_limit', '64M'); これはより安全です。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/445283.html技術記事 PHP の preg_match() 関数は、正規表現を実行するためによく使用される関数です。preg_match の使い方を詳しく紹介します。 関数の使用法 int preg_match_all ( str...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。