ホームページ > バックエンド開発 > PHPチュートリアル > PHP5.2 での preg_replace 関数の問題、php5.2preg_replace_PHP チュートリアル

PHP5.2 での preg_replace 関数の問題、php5.2preg_replace_PHP チュートリアル

WBOY
リリース: 2016-07-13 09:54:38
オリジナル
930 人が閲覧しました

PHP5.2のpreg_replace関数、php5.2preg_replaceの問題

preg_replaceはphp5.2でデフォルトで許可されているバイト数を超えて使用します。これはpcre.backtrack_limitとpcre.recursion_limitのサイズの問題です。

Discuz! 6.0.0 の正式バージョンがリリースされて以来、皆がアップグレードに忙しくしていますが、一部のプラグインには 6.0 未満で問題があります
たとえば、 http://www.discuz.net/viewthread.php?tid=559133 この銀行プラグイン

PHP 5.2.0以降の環境ではインストール後に白い画面の問題が発生します

Discuz! ユーザーの観点から、私たちはプラグイン作成者がこの問題を解決できるよう支援する必要があります

以下は私の解決プロセスです。いくつかの提案ができれば幸いです

最初に: このプラグインは 5.5 では正常に実行できますが、6.0 では画面が白くなります

Discuz!6.0 テンプレート キャッシュ ファイルの可読性を高めるために、キャッシュ ファイルのインデントが増加し、一部の templates.func.php のテンプレート処理部分が実際に変更されました。 これが理由でしょうか?改造コードを5.5のコードの一部に置き換えたら正常に動作したので、最初はここが問題だと判断していたのですが、原因がわからずかなり落ち込んでいました

ステップ 2: Bank.htm テンプレートの記述形式に問題があるのではないかと思い、意気消沈してテンプレートの分析を開始しました。正直、テンプレートがあまりにも巨大だったので、分析するのは本当に頭が痛かったです。 。どうやら理由は見つからなかったらしい。かなり憂鬱です

ステップ 2: その後、テンプレートを分割した後、テンプレートが正常に実行されたことがわかりました。この時点では、データ量が大きい場合に通常のマッチングのバグがエラーを引き起こすのではないかと最初は疑ったため、bugs.php.net にアクセスして開始しました。 http://bugs.php.net/search.php?c… ace&x=3&y=5 を検索して、最終的にこの場所を見つけました http://bugs.php.net/bug.php? =39405 ですが、突然 5.2 の設定に問題があることがわかり、pcre.backtrack_limit と pcre.recursion_limit を調整したところ、問題は解決しました


php.iniにpcre.backtrack_limit=-1とあるそうです

無制限です

これを詳しく書く理由は、問題を解決するための私のアイデアを共有するためです:)


http://www.bkjia.com/PHPjc/996223.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/996223.html技術記事 PHP5.2 の preg_replace 関数には問題があります。php5.2preg_replace preg_replace は、php5.2 で許可されているデフォルト、つまり pcre.backtrack_limit と pcre.recursion_limit のサイズよりも多くのバイトを使用します...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート