字符(弯曲的引号,破折号等)在解析XML时出现

时间:2018-04-09 11:12:28

标签: dom xml-parsing rss

我正在尝试解析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">

enter image description here

标题部分显示正确。可能是因为他们在标题&amp;中使用直引号(')。在描述中弯曲(')。但是你可以看到á也在标题中正确显示。

1 个答案:

答案 0 :(得分:0)

问题在于loadHTML行。除非另有说明,否则它不会将文本视为UTF-8。

我替换了这一行

@$doc->loadHTML($description);

这一行

@$doc->loadHTML('<?xml encoding="utf-8" ?>'.$description);

Check the original answer here