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

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

WBOY
WBOYオリジナル
2016-07-13 17:36:31821ブラウズ

preg_replace は php5.2 で許可されているデフォルトよりも多くのバイトを使用します
つまり、pcre.backtrack_limit と pcre.recursion_limit のサイズが問題になります。

Discuz! 6.0.0 プログラムの正式リリース以来、誰もがアップグレードに忙しくしていますが、一部のプラグインには 6.0 では問題があります
たとえば、http://www.discuz.net/viewthread.php?tid=559133 Bank プラグイン
PHP 5.2.0 以降の環境では、インストール後に白い画面の問題が発生します。Discuz! ユーザーの観点から、この問題を解決するにはプラグインの作成者を支援する必要があります。
以下は私の解決プロセスです。いくつかの提案ができれば幸いです

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

ディスカス! テンプレート キャッシュ ファイルの可読性を高めるために、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? id=39405 さんは、突然 5.2 の設定に問題があることに気付き、pcre.backtrack_limit と pcre.recursion_limit を調整したところ、問題は解決しました

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

http://www.bkjia.com/PHPjc/508224.html

tru​​ehttp://www.bkjia.com/PHPjc/508224.html技術記事 Preg_replace は、デフォルトで php5.2 で許可されているバイト数 (pcre.backtrack_limit および pcre.recursion_limit のサイズ) を超えて使用します。 Discuz! 6.0.0 プログラムの正式リリース以来、皆さん...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。