使用 XMLReader PHP 解析带有标签的 CDATA

Parse CDATA with tag inside, using XMLReader PHP

我需要解析一个包含 CDATA 标签的 XML 文件。在这个标签内,还有另一个我想要获取的标签。如何使用 XMLReader 实现此目的?

示例:

<glz:Param name="TITLE">
       <![CDATA[Yellow <http://www.yellow.it>]]>
</glz:Param>

如何获得全部信息 Yellow <http://www.yellow.it>?我只能得到 'Yellow'.

这是我的代码:

// load file, create a reader variable, etc.
if($reader->nodeType == XMLReader::CDATA)
{
   echo $reader->value;
}

可以通过字符串搜索得到。如您所见,String "http://www.yellow.it]]>" 不是 XML,因此您无法使用 XMLReader 解析它。 请在上面搜索字符串。 例如,你可以将字符串拆分为 "http:",你可以得到 2 个子字符串。 从第二个字符串中,您可以获得完整的 link 而无需“>]]>”。

希望对您有所帮助。

根据您的评论:

问题可能是 XmlReader 正确获取了 CDATA 标记中的全部内容,但您的浏览器再次将其解释为 html。检查页面源以查看它是否包含 a 元素。如果是这样,请尝试

echo htmlentities($reader->value); 

或发送 header 与 content-type: text/plain.