我正在用SimpleXMLElementPHP 导入RSS源.我的标题和描述有问题.出于某种原因,我从Feed获得的网站将标题和描述放在<![CDATA[...]]>:
<item>
<title><![CDATA[...title...]]></title>
<link>...url...</link>
<description><![CDATA[...title...]]></description>
<pubDate>...date...</pubDate>
<guid>...link...</guid>
</item>
Run Code Online (Sandbox Code Playgroud)
当我var_dump()在SimpleXMLElement上做一个时,我得到(对于这部分):
[2]=>
object(SimpleXMLElement)#5 (5) {
["title"]=>
object(SimpleXMLElement)#18 (0) {
}
["link"]=>
string(95) "...link..."
["description"]=>
object(SimpleXMLElement)#19 (0) {
}
["pubDate"]=>
string(31) "...date..."
["guid"]=>
string(48) "...link..."
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得的价值在 <![CDATA[...]]>读取来自饲料中的标题和描述?
IMS*_*SoP 13
SimpleXML绝对可以读取CDATA节点.您遇到的唯一问题是print_r,var_dump和类似的功能不给的SimpleXML对象的精确表示,因为他们没有在PHP中全面实施.
如果你运行,echo $myNode->description你会看到CDATA部分的内容就好了.原因是当您要求将SimpleXMLElement转换为字符串时,它会自动将所有文本和CDATA内容组合在一起 - 但在您这样做之前,它会记住这种区别.
作为一般情况,要在SimpleXML中提取任何元素或属性的字符串内容,请使用(string)$myNode.这还可以防止其他问题,例如函数抱怨在期望字符串时获取对象,或者在保存到会话时无法序列化.
另请参阅我之前的回答,网址为/sf/answers/968139161/