Php 删除simplehtmldom中的cdata

Php 删除simplehtmldom中的cdata,php,Php,你好,你好,我正在尝试抓取一个提供给我们的xml提要,我正在使用简单的htmldom抓取它,但是有些内容有cdata,我如何删除它 <date> <weekday> <![CDATA[ Friday ]]> </weekday> </date> php 我相信默认情况下simplehtmldom会删除cdata,但由于某些原因,它不起作用 如果您需要任何有助于解决此问题的信息,请告诉我 非常感谢您的帮助您可以使用另一个能够将

你好,你好,我正在尝试抓取一个提供给我们的xml提要,我正在使用简单的htmldom抓取它,但是有些内容有cdata,我如何删除它

<date>
<weekday>
<![CDATA[ Friday
]]> 
</weekday>
</date>

php


我相信默认情况下simplehtmldom会删除cdata,但由于某些原因,它不起作用

如果您需要任何有助于解决此问题的信息,请告诉我


非常感谢您的帮助

您可以使用另一个能够将cdata转换为字符串()的xml解析器:

$innerText='';
$innerText=(string)simplexml_load_string($innerText”);
基于OP代码的扩展代码示例

# [...]
<?php 
foreach($xml->find('weekday') as $e)
{
    $innerText = $e->innertext;
    $innerText = (string) simplexml_load_string("<x>$innerText</x>");
    echo $innerText . '<br>';
}
?>
#[…]

使用说明:找到包含
foreach
的行,然后将原始代码与新代码进行比较(只有所讨论的
foreach
已被替换)。

我同意另一个答案-只需允许显示CDATA即可。我推荐simpleXML

$xml = simplexml_load_file('test.xml', 'SimpleXMLElement', LIBXML_NOCDATA);
echo '<pre>', print_r($xml), '</pre>';
$xml=simplexml\u load\u文件('test.xml','simplexmlement',LIBXML\u NOCDATA);
echo'',print_r($xml),'';

LIBXML\u NOCDATA很重要-保存在那里。

它似乎不起作用,星期五这一天是动态的xml是一个天气xml提要,我可以使用simplehtmldom获取所有内容,除了带有cdata的。感谢您提供的信息,我将使用其他xml解析器,就像您所说的=)只需在变量上使用一行:
$e->innertext
。如果需要快速修复,无需更改整个库。别忘了向库作者报告您的问题。用$innertext=''替换$e->innertext是什么意思;我无法想象这个小小的、仅仅一行的例子太难理解了。我可以明确地说:您可以使用这行代码将存储到
$e->innertext
中的cdata文本转换为非cdata文本。信息清楚吗?谢谢你的帮助,哈克,很抱歉回复晚了。非常感谢,我可以在simplehtmldom旁边使用它,还是应该只使用simplexml?
# [...]
<?php 
foreach($xml->find('weekday') as $e)
{
    $innerText = $e->innertext;
    $innerText = (string) simplexml_load_string("<x>$innerText</x>");
    echo $innerText . '<br>';
}
?>
$xml = simplexml_load_file('test.xml', 'SimpleXMLElement', LIBXML_NOCDATA);
echo '<pre>', print_r($xml), '</pre>';