【发布时间】:2011-04-11 16:17:31
【问题描述】:
我有一个接受通用 HTML 文件和通用 XPath 表达式的函数。我想提取包含整个文本(包括 HTML 标签)的匹配节点的字符串。 这是一个简化的示例...
<?php
$inDocStg = "
<html><body>
<div>The best-laid<br> schemes o' <span>mice</span> an' men
<img src='./mouse.gif'><br>
</div>
</body></html>
";
$xPathDom = new DOMDocument();
@$xPathDom->loadHTML( $inDocStg );
$xPath = new DOMXPath( $xPathDom );
$matches = $xPath->query( "//div" );
echo $matches->item(0)->nodeValue;
?>
这会产生(我正在查看生成的 HTML 源 - 而不是浏览器输出)...
The best-laid schemes o' mice an' men
(HTML 标记已被剥离)。
但我想要的是……
The best-laid<br> schemes o' <span>mice</span> an' men<img src='./mouse.gif'><br>
谢谢。
【问题讨论】:
-
如果你尝试访问 __tostring 的魔法方法会发生什么? ..
echo $matches->item(0)? -
嗨罗伯特皮特。不知道你到底是什么意思。 echo $matches->item(0)->nodeValue.toString();产生错误。 echo $matches->item(0).toString();也会产生错误。
-
__toString()是一个神奇的方法,当你尝试回显和反对时它会自动调用,所以你只需要使用echo $matches->item(0)并且取决于 __tostring 产生的内容,可能会给你元素.检查我的帖子!