Php 正在阅读`<;中的文本;![CDATA[…]]>;`使用simplexmlement
我正在用PHP中的Php 正在阅读`<;中的文本;![CDATA[…]]>;`使用simplexmlement,php,xml,simplexml,cdata,Php,Xml,Simplexml,Cdata,我正在用PHP中的simplexmlement导入RSS提要。我在标题和描述方面遇到了问题。出于某种原因,我获取提要的网站将标题和描述放在中: …网址。。。 …日期。。。 链接 当我在SimpleXMLElement上执行var\u dump()时,我得到(对于这部分): [2]=> 对象(SimpleXMLElement)#5(5){ [“标题”]=> 对象(SimpleXMLElement)#18(0){ } [“链接”]=> 字符串(95)“…链接…” [“说明”]=> 对象(Simp
simplexmlement
导入RSS提要。我在标题和描述方面遇到了问题。出于某种原因,我获取提要的网站将标题和描述放在
中:
…网址。。。
…日期。。。
链接
当我在SimpleXMLElement上执行var\u dump()
时,我得到(对于这部分):
[2]=>
对象(SimpleXMLElement)#5(5){
[“标题”]=>
对象(SimpleXMLElement)#18(0){
}
[“链接”]=>
字符串(95)“…链接…”
[“说明”]=>
对象(SimpleXMLElement)#19(0){
}
[“发布日期”]=>
字符串(31)“…日期…”
[“guid”]=>
字符串(48)“…链接…”
}
如何获取
中的值以从提要中读取标题和描述?SimpleXML读取CDATA节点非常好。您遇到的唯一问题是,print\u r
、var\u dump
,以及类似的函数不能准确表示SimpleXML对象,因为它们没有在PHP中完全实现
如果运行echo$myNode->description
,您将看到CDATA部分的内容。原因是,当您要求将SimpleXMLElement转换为字符串时,它会自动为您组合所有文本和CDATA内容,但在您这样做之前,它会记住区别
一般情况下,要提取SimpleXML中任何元素或属性的字符串内容,请使用(string)$myNode
转换为字符串。这还可以防止其他问题,例如函数在需要字符串时抱怨获取对象,或者在保存到会话时未能序列化
另请参见我先前的回答