0

私は、後で必要になる xml 構造に php を使用して、いくつかの恐ろしい無効な html コードをマップしようとしています。これは非常にうまく機能しますが、処理できない部分が常にあります。したがって、決定は、xmlが有効なままになるように、そのコードを削除することです。これはどのように見えるかです。

<body>
    <item>abc</item>
    <item>def</item>
    unparsable rest
</body>

したがって、目標は、「解析不能な残り」を削除するための解決策(おそらく正規表現ですが、私はどんな解決策にも対応しています)を見つけることです。

この正規表現で preg_replace を使用してみました

/<\/item>(((?!item).)*)\s*<\/body>/iU

そして、それはかなりうまく機能し、$1 に入れたかった部分と正確に一致し、最後の と の間のすべてのものでしたが、xml が非常に大きいため、数ミリ秒後に計算がクラッシュします。正規表現が否定的な先読みを行うのにあまり適していないことは知っていますが、それほど悪いとは思いませんでした。

したがって、より効率的なソリューションが必要です。残念ながら、strrpos の後にさらに多くのタグがあるため、strrpos は使用できません。

4

2 に答える 2