Perl 正規表現テンプレート エンジン 正規表現のデバッグのヒント

WBOY
リリース: 2016-07-29 08:46:16
オリジナル
1299 人が閲覧しました

正規表現置換に基づくテンプレート エンジンは、正規表現のバックトラッキング/再帰の最大制限に簡単に遭遇する可能性があります。
通常の状況では、遅延マッチングはひどいものではなく、Discuz のテンプレート エンジンが広く使用されている制限を超えることはありません。しかし、注意を払わずに勉強しないと、簡単に間違いを犯したり、問題に遭遇したりするでしょう。
preg_* が null を返す場合、判定関数は is_null であることに注意してください。
間違いはひどいことではありませんが、デバッグを容易にするために、すべてのエラーを完全に出力するのが最善です。
エラーの原因を出力するだけでなく、一致したテキストや使用した正規表現も出力するため、デバッグが容易です。
PHPコード

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


if (is_null($tmp)){
$error_code = preg_last_error();
switch($error_code){
ケース PREG_NO_ERROR :
エコー 'PREG_NO_ERROR';
ケース PREG_INTERNAL_ERROR '
エコー 'PREG_BACKTRACK_LIMIT_ERROR'; _LIMIT_ERROR:
エコー 'PREG_RECURSION_LIMIT_ERROR';
ケース PREG_BAD_UTF8_ERROR:
エコー'PREG_BAD_UTF8_ERROR';
ブレーク; ケース PREG_BAD_UTF8_OFFSET_ERROR'
ブレーク;



参考文献
1. Laruence
「最大バックトラッキング/再帰制限を理解する」規則性 (pcre)"

2、2011、PHP 中国語マニュアル
preg_last_error


上記では、PHP の正規表現の内容を含め、PHP の正規表現とテンプレート エンジンの正規表現のデバッグのヒントを紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート