2016-12-15 105 views
0

我正在使用下面的google建议查询并返回xml格式输出,在此输出中它包含特殊或其他语言字符。xml simplexml_load_file不解析特殊或其他语言字符

http://suggestqueries.google.com/complete/search?output=toolbar&hl=en&q=facebook+e 

它给下面的XML格式输出...

<toplevel> 
<CompleteSuggestion> 
<suggestion data="facebook en español"/> 
</CompleteSuggestion> 
<CompleteSuggestion> 
<suggestion data="facebook emojis"/> 
</CompleteSuggestion> 
<CompleteSuggestion> 
<suggestion data="facebook event photo size"/> 
</CompleteSuggestion> 
<CompleteSuggestion> 
<suggestion data="facebook emoticons"/> 
</CompleteSuggestion> 
<CompleteSuggestion> 
<suggestion data="facebook email"/> 
</CompleteSuggestion> 
<CompleteSuggestion> 
<suggestion data="facebook events"/> 
</CompleteSuggestion> 
<CompleteSuggestion> 
<suggestion data="facebook earnings"/> 
</CompleteSuggestion> 
<CompleteSuggestion> 
<suggestion data="facebook earnings date"/> 
</CompleteSuggestion> 
<CompleteSuggestion> 
<suggestion data="facebook email address"/> 
</CompleteSuggestion> 
<CompleteSuggestion> 
<suggestion data="facebook event banner size"/> 
</CompleteSuggestion> 
</toplevel> 

当我使用下面的代码加载这个XML文件的foreach我得到错误...

foreach ($xml->children() as $child) { 
foreach ($child->suggestion->attributes() as $dta) { 
echo "<br>"; 
echo $dta; 
} 
} 

输出下面得到错误信息......

Warning: simplexml_load_file(): 
http://suggestqueries.google.com/complete/search? 
output=toolbar&hl=en&q=facebook.'%20'.e:1: parser error : Input is not 
proper UTF-8, indicate encoding ! Bytes: 0xF1 0x6F 0x6C 0x22 in 

Warning: simplexml_load_file(): es"/></CompleteSuggestion> 
<CompleteSuggestion><suggestion data="facebook en espa in 

回答

0

在尝试解析它之前,您应该在UTF-8中编码google建议查询的响应。

$encodedResponse = utf8_encode(file_get_contents('http://suggestqueries.google.com/complete/search?output=toolbar&hl=en&q=facebook+e')); 
$xml = simplexml_load_string($encodedResponse); 
+0

嗨Arnaud,谢谢 –

+0

不客气。我可以请你加入我的答案吗?谢谢。 –