過去 10 時間インターネットで答えを探した結果、解決できない問題が発生しています。
この形式のデータがあります
??E?�?0?�?<?20120529184453+0200?20120529184453+0200?�?�?G0E?5?=20111213T103134000-136.225.6.103-30365316-1448169323, ver: 12?�?W??tP?2?�? ??|????? ??:o?????tP?�??B@?????B@????�?�?)0?�??? 49471010550?�??	???tP???3??<?�?�?�?�??�?�?�?�?�??�?�?�?�?�
私が書いたものではない PHP コードがありますが、これは html_entity_decode を実行しているだけで、正しい結果が返されます。
Perl の decode_entities を実行しようとすると、まったく異なる結果が得られます。�
いくつかのデバッグの後、PHPは無効なエンティティと思われるものを「適切に」置き換えているように思え
ます。
一方、Perl はこれらの「無効な」エンティティをデコードしていないようで、それらをそのままにしておくと、後で結果が台無しになります (これは unpack を通過するか、phph の場合は bin2hex を通過します。null を 00 に unpack するのではなく、の個々の文字を展開します�
)。
decode_entities を実行した後に perl で次の置換を実行するなど、考えられるすべてのことを試しました
$var =~ s/&#(\d+);/chr($1)/g
しかし、それはまったく機能しません。
これは私を怒らせており、これを php ではなく perl で実行したいと考えています。考えられるすべてのエンティティと数値をカバーするために、perl で 1000 行のパターン マッチング行を記述する必要がないことを本当に願っています。
PHP の html_entity_decode 関数全体を perl に解析したり、パターン マッチングの無限の行を記述したりすることなく、この問題に対処する方法を知っている人はいますか?