我正在尝试解析Guardian RSS提要(Link)。 Feed包含弯曲的引号(“'”),短划线( - )和带重音的字符(Orbán)。
当我解析&在HTML页面上显示文本,这些字符显示为(对于引号和破折号),Ã(对于á)&在“描述”部分中也是如此。如何让它们正确解析?
代码
$xml = simplexml_load_file($link);
for($i = 0; $i < 30; $i++){
$title = $xml->channel->item[$i]->title;
$description = $xml->channel->item[$i]->description;
$count = 0;
$para = "";
$doc = new DOMDocument();
@$doc->loadHTML($description);
while($count<3){
if($count==0){
$para = $doc->getElementsByTagName('p')->item($count)->nodeValue;
}else{
$para = $para."<br><br>".$doc->getElementsByTagName('p')->item($count)->nodeValue;
}
$count++;
}
echo "<tr>";
echo "<td>" . $title . "</td>";
echo "<td>" . $para . "</td>";
echo "</tr>";
}
我的'head'部分中有以下行。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
标题部分显示正确。可能是因为他们在标题&amp;中使用直引号(')。在描述中弯曲(')。但是你可以看到á也在标题中正确显示。
答案 0 :(得分:0)
问题在于loadHTML行。除非另有说明,否则它不会将文本视为UTF-8。
我替换了这一行
@$doc->loadHTML($description);
这一行
@$doc->loadHTML('<?xml encoding="utf-8" ?>'.$description);