지난 10 시간 동안 인터넷에서 답변을 검색 한 후 해결할 수없는 문제가 있습니다.perl에서 html 엔티티를 제대로 디코딩 할 수 없음
은 내가 그냥에서의 html_entity_decode를 실행하는 나에 의해 작성되지 않은 PHP 코드를 가지고 있으며 올바른 결과를 반환 형식
??E?�?0?�?<?20120529184453+0200?20120529184453+0200?�?�?G0E?5?=20111213T103134000-136.225.6.103-30365316-1448169323, ver: 12?�?W??tP?2?�? ??|????? ??:o?????tP?�??[email protected]?????[email protected]????�?�?)0?�??? 49471010550?�??	???tP???3??<?�?�?�?�??�?�?�?�?�??�?�?�?�?�
에서 일부 데이터를 가지고있다.
Perl의 decode_entities를 실행하면 완전히 다른 결과를 얻습니다. 일부 디버깅 후에 그것은 PHP가 "적절하게"잘못된 항목 (예 : �
또는 
)을 아스키 대응 항목, 즉 언급 된 2 개의 사례에 대한 NULL 및 백 스페이스로 바꾸는 것으로 보입니다.
Perl은 "유효하지 않은"엔티티를 디코드하지 않고 나중에 하나의 결과가 나올 수 있습니다. (어느 것이 압축을 풀거나 phph의 경우 bin2hex에서 null을 언팩하기보다 실패하기 때문에) 00으로 설정하면 �
의 개별 문자가 압축 해제됩니다.
내가 생각할 수있는 모든 것을 시도 포함 전혀 작동하지 않습니다하지만 실행 decode_entities
$var =~ s/&#(\d+);/chr($1)/g
후 펄에서 다음과 같은 대체를 실행.
이것은 나를 미치게 만들고 나는 이것을 phl보다는 오히려 perl로하고 싶습니다. 가능한 모든 엔티티와 숫자를 다루기 위해 perl에서 1000 개의 패턴 일치 행을 쓸 필요가 없길 바랍니다.
PHP 전체 html_entity_decode 함수를 perl로 구문 분석하거나 끝없는 패턴 매칭 라인을 작성하지 않고이 문제를 해결하는 방법을 알고있는 사람이 있습니까?
감사합니다. 그게 내 문제를 해결해 줬어. – ByteFlinger