0

我正在编写一个 RSS 类型的阅读器网页来解析来自一些游戏网站的信息。

其中一款游戏的 RSS 提要写得不好。

他们没有费心将描述包装到 CDATA 中,并且使用 simplexml_load_file 解析时会出错。

这是我为解析它而编写的函数:

 function displayAll($url) {

 $url = "https://www.game.com/newsfeed/rss.vm";
 $game = simplexml_load_file($url);

 $item = $game->rss->channel->item;
 foreach ($item as $items) {

 echo '<li>';
 echo ''.$items->title.'';
 echo ''.$items->description.'';
 echo ''.$items->link.'';
 echo '</li>';

  }
 }

我收到以下错误:

 Warning: simplexml_load_file() [function.simplexml-load-file]: https://www.game.com/newsfeed/rss.xml:15: parser error : 
 Entity 'nbsp' not defined in /results.php on line 27
 Warning: simplexml_load_file() [function.simplexml-load-file]: https://www.game.com/newsfeed/rss.xml:20: parser error : 
 Entity 'nbsp' not defined in /results.php on line 27

获得多个相同的错误都围绕在提要中写得很糟糕的html。

我在问如何解决这个问题,有没有办法在解析之前将 html 转换回 xml 描述中的字母/空格/等标签?

任何建议,将不胜感激。

4

1 回答 1

1

试试这个

$data = file_get_contents($url);
$data = str_replace(array('<description>','</description>'), array('<description><![CDATA[',']]></description>'), $data);

$game = simplexml_load_string($data);
于 2013-08-09T15:17:44.403 回答