preg_match_allステートメントに問題があります。記事を入力している間は完全に機能していますが、一定の長さを超えると突然、すべての機能が停止します。これは、非常に多くの文字の後で何も実行されないという関数の既知の問題ですか?
$number = preg_match_all("/(<!-- ([\w]+):start -->)\n?(.*?)\n?(<!-- \\2:stop -->)/s", $data, $matches, PREG_SET_ORDER);
これはずっと正常に機能しており、他のページでも正常に機能しますが、その記事が一定の長さを超えると、その記事では機能しなくなります。より長いテキストブロックで機能させるために使用できる別の解決策はありますか?処理中の記事の長さは約33,000文字(スペースを含む)です。
私は以前にこのような質問をしましたが、実際にテストしたことのない答えは1つしかありませんでした。前回、その特定のシナリオでそれを回避する別の方法を見つけましたが、今回はすべて1つの記事であるため、回避する方法はありません。を変更してみpcre.backtrack_limit
ましpcre.recursion_limit
たが、50万までもまったく効果がありませんでした。これが発生している理由と、これらの巨大なテキストブロックに対しても機能し続けるために私ができることについて他に何かアイデアはありますか?30,000文字の制限は少し低いようです。これは、わずか5,000〜6,000語です(これは約5,700語です)。2つの別々のテキストブロックにある場合、開始と停止が見つからないため、ここで分割することは実際にはオプションではありません。