2010-07-15 5 views
0

외부 소스의 피드를 구문 분석하기 위해 simplexml_load_file 메소드를 사용하고 있습니다.RSS 리더 오류 : simplexml_load_file()을 사용할 때 입력이 적절하지 않습니다.

$ rssFeed [ '데일리 스타'] = 'http://www.thedailystar.net/latest/rss/rss.xml'와 같은 내 코드; $ rssParser = simplexml_load_file ($ url); 다음

출력은 :

경고 : simplexml_load_file() function.simplexml로드 파일] http://www.thedailystar.net/latest/rss/rss.xml:12 : 파서 ​​오류 : 입력 적절하지 않다 UTF-8 인코딩을 나타내는! 바이트 : 0x92 0x73 0x20 0x48 C : \ xampp \ htdocs \ googlebd \ index.php 39 행

치명적인 오류와 함께 궁극적으로 중지하십시오. 주요 문제는 사이트의 문자 인코딩이 UTF-8이 아닌 ISO-8859-1입니다.

이 방법 (SimpleXML API)을 사용하여 읽을 수 있습니까? 다른 방법이 없다면 사용할 수 있습니까? Google을 통해 검색했지만 답변이 없습니다. 내가 적용한 모든 메소드가이 오류와 함께 반환됩니다.

감사합니다, 라쉬드

답변

0

글쎄, 난 파이썬을 사용하여이 콘텐츠를 검색 할 때 잘, 나는 다음과 같은 얻을 :

'\n<rss version="2.0" encoding="ISO-8859-1">\n [...] 
<description>The results of this year\x92s Higher Secondary Certificate 

이제 그것이 ISO-8859-1,하지만을 말한다 \ x92는 해당 문자 집합에 없지만 대신 Windows-1252에서 아포스트로피로 사용되는 닫는 둥근 작은 따옴표입니다. 따라서 페이지는 인코딩 오류를 던지고 XML 사양에 따라 클라이언트는 "엄격"하고 오류를 수정하지 않아야합니다.

ISO-8859-1이 아닌 문자를 필터링하거나 더 나은 결과를 얻기 위해 mb-convert-encoding()을 사용하여 인코딩을 변환 한 다음 RSS 파서에 전달할 수 있습니다.

아, 결과를 UTF-8 페이지로 통합하려는 경우 모든 것이 UTF-8로 변환 될 수 있습니다. 영어로되어 있기는하지만 모든 문자 인코딩이 필요하지 않을 수도 있습니다. 결국 ASCII가되어야합니다.

0

동일한 문제가 발생하여 utf8_encode을 사용하여 ISO-8859-1/latin-1에서 UTF-8로 인코딩을 변경하고 오류가 발생합니다.

$contents = file_get_contents($url); 
simplexml_load_string(utf8_encode($contents)); 
관련 문제