Php 输出html解析的干净格式
我正在使用下面的代码来检索一个特定的div及其内容,当您查看我的页面的源代码时,所有的html都被很好地格式化了,下面的代码中有没有格式化html的方法?我尝试过将ob_start和formatOutput设置为true,但其中的所有html都是视图源中的自升式Php 输出html解析的干净格式,php,Php,我正在使用下面的代码来检索一个特定的div及其内容,当您查看我的页面的源代码时,所有的html都被很好地格式化了,下面的代码中有没有格式化html的方法?我尝试过将ob_start和formatOutput设置为true,但其中的所有html都是视图源中的自升式 <?php $doc = new DOMDocument(); $doc->preserveWhiteSpace = TRUE; $doc->formatOutput = TRUE;
<?php
$doc = new DOMDocument();
$doc->preserveWhiteSpace = TRUE;
$doc->formatOutput = TRUE;
$doc->loadHTMLFile('http://example.com/activity.php?uid=94003');
$matches = (new DOMXPath($doc))->query("//div[contains(concat(' ', normalize-space(@class), ' '), 'global1')]");
foreach ($matches as $node) {
echo $doc->saveHTML($node);
}
?>
可以帮助您
使文本中的HTML标记更加安全并符合标准流程
用于HTML、XHTML或XML文档的文本;HTML5支持限制
使用黑名单或白名单的HTML元素、属性或URL协议
平衡标记、检查元素嵌套、转换不推荐的属性
和标签,使相对URL成为绝对的,等等。快速,高度可定制,
文档齐全的单文件,55KB文件简单HTML,免费
并根据LGPL v3和GPL v2+获得许可,用于过滤、保护&
清理博客评论或论坛帖子中的HTML,生成兼容XML的
从网页摘录中输入项目,将HTML转换为XHTML,漂亮的打印
HTML、清除网页、减少垃圾邮件、删除XSS代码等
您可以通过以下代码来实现:
<?php
require("htmLawed/htmLawed.php");
$doc = new DOMDocument();
$doc->preserveWhiteSpace = TRUE;
$doc->formatOutput = TRUE;
$doc->loadHTMLFile('http://example.com/activity.php?uid=94003');
$matches = (new DOMXPath($doc))->query("//div[contains(concat(' ', normalize-space(@class), ' '), 'global1')]");
$result = "<pre>";
foreach ($matches as $node) {
$temp = $doc->saveHTML($node);
$result .= htmlspecialchars( htmLawed($temp, array('tidy'=>4)));
}
$result .= "</pre>";
echo $result;
?>
你所说的“格式”是什么意思?发生了什么?你能公布实际和预期的产出吗?如何提高?向我们展示预期的输出和您当前获得的内容。我们不是读心术的人(至少不是我)。如果只是源代码的外观,为什么即使代码运行也很重要呢?所有的div都被推到了一边,所以源代码都是干净的,格式化的,但这部分是不完整的not@FelippeDuarte我更新了itHTML TIdy让我们这样做:这完全破坏了它,带来了页面和diidnt格式的所有内容it@Codi我已经更新了我的答案。请检查并通知我答案result.it表示可恢复的致命错误:无法将DomeElement类的对象转换为string@Codi通过(string)$node将其转换为字符串
我不确定您的意思将其转换为字符串我对此不熟悉
<div>
<table></table>
<table></table>
<table></table>
</div>
<?php
require("htmLawed/htmLawed.php");
$doc = new DOMDocument();
$doc->preserveWhiteSpace = TRUE;
$doc->formatOutput = TRUE;
$doc->loadHTMLFile('http://example.com/activity.php?uid=94003');
$matches = (new DOMXPath($doc))->query("//div[contains(concat(' ', normalize-space(@class), ' '), 'global1')]");
$result = "<pre>";
foreach ($matches as $node) {
$temp = $doc->saveHTML($node);
$result .= htmlspecialchars( htmLawed($temp, array('tidy'=>4)));
}
$result .= "</pre>";
echo $result;
?>