0
私は操作する必要があるいくつかの異なるソースからhtmlで読んでいます。これの一部として、html内の情報の一部を置き換えなければならないpreg_replace()呼び出しがいくつかあります。入力がhtmlの場合、preg_replaceがnullを返す(すべてではない)
私はこれを行う必要があるサイトの90%で、すべて正常に動作し、残りの10%はそれぞれのpreg_replace()呼び出しでNULLを返しています。
同じ問題があると思われる他の記事に基づいて、pcre.backtrack_limitとpcre.recursion_limitを増やしてみましたが、これは役に立たなかったです。
私は、PHPドキュメントが全く役に立たないと証明するために '4'を返すpreg_last_error()を出力しています。だから、誰かがこの問題を解消できれば、しかし、私は困惑しています。
$html = preg_replace('@<script[^>]*?.*?</script>@siu', '', $html);
が、私が言ったように、これは時間の90%に動作します:問題の例の
一つがあります。
私は '*'どのように解釈されるかわかりませんが、それは冗長なようだ(に相当するものは、 '*'、ありません?)。 – pascal
また、最初の '
あなたは悪いutf-8です。
ただし、実際には正規表現を使用してhtmlを解析しないでください。また、私はこの答えはYou can't parse [X]HTML with regex.
出典
2011-01-28 16:19:27
あなたの#4にエラーが「PREG_BAD_UTF8_ERROR」である含めずに完全なものとは思わない、あなたはサイト上で使用される文字セットをチェックする必要があります。このエラーの原因となったWICH:DOMDocument
EDIT使用してください。
出典
2011-01-28 16:21:30 soju
バックトラックまたは内部再帰制限を超過した可能性があります。 ?
http://php.net/manual/en/pcre.configuration.phpがにpreg_replace前にこれを試してみてください参照してください。
出典
2011-01-28 16:22:36 arnaud576875