【发布时间】:2013-10-10 20:59:35
【问题描述】:
我正在尝试使用 XPath 提取包含 HTML 标记的完整表格,我可以将其存储在变量中,进行一些字符串替换,然后直接回显到屏幕上。我发现了很多关于将文本从表格中取出的帖子,但我想保留 HTML 格式,因为我只是要显示它(经过轻微修改)。
目前我正在使用字符串函数 stristr、substr 等提取表格,但我更喜欢使用 XPath。
我可以使用以下内容显示表格的内容,但它只显示没有格式的表格 TD 字段。它也不会将其存储在我可以操作的变量中。
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$arr = $xpath->query('//table');
foreach($arr as $el) {
echo $el->textContent;
我试过了,但没有输出:
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$arr = $xpath->query('//table');
echo $arr->saveHTML();
【问题讨论】:
-
textContent属性(php.net/manual/en/class.domnode.php#domnode.props.textcontent)只返回<table>元素及其后代的文本内容;即没有 HTML 开始/结束标签或 HTML 属性。我不知道 DOMNode 或其同类是否提供了一种方法来提取节点的“outerHTML”(包括标记的序列化)。 -
我想我可能需要使用 saveHTML。只是想弄清楚它是如何工作的。
-
我认为 saveHTML 将自己的 等包裹在数据周围。我只是使用 xpath 来删除所有这些!
-
我是新手。请善待。我看过其他答案,但不太确定如何使用它。我上面的回声会变成: echo $domDocument->saveHtml($el);