如何防止文档类型被添加到 HTML 中?

2023-12-02

我一直在用 DOM 处理这个 tidy-up-messy-html 标签,但现在我意识到一个更大的问题,

$content = '<p><a href="#">this is a link</a></p>';

function tidy_html($content,$allowable_tags = null, $span_regex = null)
{      
    $dom = new DOMDocument();
    $dom->loadHTML($content);

        // other codes
    return $dom->saveHTML();
}

echo tidy_html($content);

它将输出整个 DOM,

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
<html><body><p><a href="#">this is a link</a></p></body></html> 

但我只想要这样的回报,

<p><a href="#">this is a link</a></p>

我不想,

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
    <html><body>...</body></html>

这可能吗??

EDIT:

the innerHTML模拟在我的数据库中生成一些奇怪的代码,例如&#13; ,  , ’

<p>Monday July 5th 10am - 3.30pm £20</p>&#13;
<p>Be one of the first visitors to the ...at this special event.Â</p>&#13;
<p>All participants will receive a free copy of the ‘Contemporary Art Kit’ produced exclusively for Art on....</p>&#13;

the innerHTML模拟,

$innerHHTML = '';
$nodeBody = $dom->getElementsByTagName('body')->item(0);
foreach($nodeBody->childNodes as $child) {
  $innerHTML .= $nodeBody->ownerDocument->saveXML($child);
}

我发现它在中断时创建奇怪代码的原因是saveXML($child)

所以当我有这样的事情时

$content = '<p><br/><a href="#">xx</a></p>
<p><br/><a href="#">xx</a></p>';

它会返回这样的东西,

<p><a href="#">xx</a></p>&#13;
<p><a href="#">xx</a></p>

但我实际上想要这样的东西,

<p><a href="#">xx</a></p>
<p><a href="#">xx</a></p>

如果您正在处理片段,通常只需要正文内容。

PHP 中的 DomDocument 不提供类似的功能innerHTML。不过你可以模拟它:

$innerHHTML = '';
$nodeBody = $dom->getElementsByTagName('body')->item(0);
foreach($nodeBody->childNodes as $child) {
  $innerHTML .= $nodeBody->ownerDocument->saveXML($child);
}

如果你只想修复一个片段,你可以使用整洁的图书馆还有:

$html = tidy_repair_string($html, array('output-xhtml'=>1,'show-body-only'=>1));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止文档类型被添加到 HTML 中? 的相关文章

  • 使用 file_get_content 发布数据

    我已经做了一些关于如何使用的研究file get content与帖子 我也读过this one https stackoverflow com questions 2445276 how to post data in php using
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • Laravel Auth:attempt() 不会持久登录

    我在网上找到了许多有类似问题的资源 但似乎没有一个解决方案可以解决我的问题 当我使用以下代码登录用户时 一切看起来都很好 email Input get email password Input get password if Auth a
  • get url 重定向时 File_get_contents() 不起作用

    我正在使用的功能是 function http post url data data url http build query data data len strlen data url date default timezone set
  • php中的条件格式化html表与时间戳比较

    echo table style width 100 tr echo td Order td echo td Destination td echo td Location td echo td Status td echo td Time
  • 如何检测字符串中的非 ASCII 字符?

    如果我有一个 PHP 字符串 如何以有效的方式确定它是否至少包含一个非 ASCII 字符 我所说的非 ASCII 字符是指不属于该表的任何字符 http www asciitable com http www asciitable com
  • 如何隐藏 URL 中的锚标记

    如何隐藏地址栏中以下链接 href 的哈希值 a href index php dev name 所以它会将我重定向到index php dev name 但我希望地址栏只显示index php 您可以使用 Javascript oncli
  • PHP 无法加载动态库“php_pdo_oci.dll”

    我在 Windows 8 上运行 Apache 2 4 7 和 PHP 5 5 9 我安装了 PHPUnit 并开始弹出此警告图像 警告 是的 我在 php ini 中启用了扩展加载以及 extension dir 以更正文件夹 并且该文件
  • 未传递“client_reference_id”参数

    我使用 Stripe Checkout Stripe 版本 2016 07 06 我想通过参数 client reference id 恢复个性化数据 但在 JSON 中 当我有金额或电子邮件时 我找不到它 我是在测试环境中 你能帮我吗 先
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • 如何在多次尝试后延迟登录尝试 (PHP)

    我正在开发一个用 PHP 构建的相当大的网站 该网站可能会有很多用户 我正在寻找一种方法来保护登录屏幕免受自动尝试的影响 我已经在注册表中添加了验证码检查 但还想进一步强化网站 据我所知 StackOverflow 上也有类似的问题 而且我
  • 如何纠正这个非法字符串偏移?

    我收到此错误 警告 第 32 行 home mysite public html wp content themes evento lib php extra class php 中的非法字符串偏移 type 我意识到文件中的这部分代码是错
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • PHP 扩展开发入门 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 请推荐有关 PHP 低 级 modules 编程接口的帮助文章或教程 搜索我的书签 我发现的唯一链接是
  • 如何在 Zend MVC 中实现 SSL

    我之前已经通过使用特定的安全文件夹 例如服务器上的 https 文件夹与 http 文件夹 实现了安全页面 我已经开始使用 Zend Framework 并希望应用程序的某些部分 例如登录 使用 https 我在谷歌上搜索过 甚至在这里搜索
  • 如何在 phalcon 框架中同时连接多个数据库在模型类中同时使用两个而不仅仅是一个

    在我的代码中我有两个数据库ABC and XYZ 我想在同一模型中使用两个数据库 而不是 phalcon 中的解决方案是什么 如何为此实现多个数据库连接 one
  • Stream_context_set_params 不适用于 ssh2.sftp 包装器

    我想使用类似的功能here http www php net manual en function stream notification callback php 请检查以下代码 function notify notification
  • phpActiveRecord 日期时间格式不正确

    当尝试使用 phpActiveRecord 在表中创建记录时 出现以下错误 Invalid datetime format 1292 Incorrect datetime value 2013 06 20 11 59 08 PDT for
  • 从字符串中获取数字

    我有一个字符串 例如 lorem 110 ipusm 我想获取 110 我已经尝试过这个 preg match all 0 9 string ret 但这正在返回 Array 0 gt 1 1 gt 1 2 gt 0 我想要这样的东西 Ar

随机推荐

  • 如何在sql server中将字符串转换为查询

    如何添加包含 And 子句的字符串 但是当我们应用查询该字符串时 该字符串将被视为查询并满足所有和条件我有一个查询 例如 Declare WhereQuery varchar max SET WhereQuery class BCA and
  • 如何跳过 XML 反序列化中引发错误的对象?

    我正在对非常大的 XML 文档 有时超过 200MB 使用 XML 反序列化 大多数文档都运行得很好 但有时反序列化函数会抛出错误 例如 当整数是字符串时 您会收到 格式错误 当无法识别指定的类型时 您会收到错误 Input string
  • 如何在dust.js中实现自定义渲染逻辑?

    我使用dust js 来呈现变量名称列表 这些名称有时很长并且包含下划线 例如 SUM COUNT LABOR COUNTRIES SMS PAST 浏览器不会用下划线换行 因此它会变得难看 我希望我的灰尘模板在每个下划线后添加一个零宽度的
  • 简单的 OpenGL GUI 框架用户交互建议? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我正在从头开始设计一个简单的 GUI 框架作为一个项目 使用 OpenGL 没有任何其他外部东西 并且需要一些关于如何实现用户交互的建议 基本上 我有一个基类GUIItem所有元素都继承自
  • 快速合并/连接两个表linux命令行

    假设我有两个相对较大的制表符分隔文件 file1 txt file2 txt file1 txt id tcity tcar ttype tmodel file2 txt id tname trating 让我们假设 file1 txt 有
  • 在cardlayout中切换卡片后运行方法

    我确信以前有人问过这个问题 但我的谷歌今天不强 我有一个使用 CardLayout 作为其管理器的 JFrame 当我在不使用开关的情况下切换到每个 JPanel 时 如何运行 Start 方法 我用来将框架添加到布局的代码是 Adds J
  • 如何使用 SQLiteAssetHelper 从加密数据库读取数据?

    我有一个加密的数据库并插入资产文件夹中 我正在使用 SQLiteAssetHelper 类从数据库检索数据 当我从加密数据库检索数据时 它会抛出类似 E SQLiteLog 26 文件已加密或不是数据库 的错误 无论如何 有没有使用 SQL
  • 在Java中通过txt文件创建对象到数组中

    我正在尝试完成一个小程序 我有一个文本文件 txt 来存储我所拥有的对象的不同数据 该文件的结构如下 例如 data txt Sedane 2005 195000 Diesel Blue SUV 2013 34000 Fuel Black
  • 避免对某些自动完成的订单重复发送电子邮件通知

    我在 WooCommerce 上使用这个小小的和平代码从这个答案基于支付网关自动完成付费处理订单 AUTO COMPLETE PAID ORDERS IN WOOCOMMERCE add action woocommerce thankyo
  • 使用 32 位哈希时发生冲突的概率

    我的数据库中有一个 10 个字符的字符串键字段 我已经使用 CRC32 对该字段进行哈希处理 但我担心重复项 有人可以告诉我在这种情况下发生碰撞的可能性吗 P S 我的字符串字段在数据库中是唯一的 如果字符串字段的数量为 100 万个 那么
  • 如何使用通用方法实现特征?

    我正在尝试实现一个包含通用方法的特征 trait Trait fn method
  • plt.plot(x,y) 和 plt.show() 如何工作?

    我想知道之间发生的基本骨干流程plt plot x y and plt show 的命令matplotlib pyplot 详细说明一下 这段代码 plt plot x y plt show 显示所需的图表 没问题 另外 代码 plt pl
  • 在 Azure DevOps 发布管道中运行 Java Selenium 测试

    我正在为 AzureDevops CI CD 管道中的 Java 项目进行 POC 我创建了一个 Maven 项目 其中包含 Selenium 测试 TestNG 该测试针对独立于我的项目的演示网站运行 我想在构建管道中运行单元测试 并在发
  • 有什么简单的方法来创建具有固定长度和总和的数组组合吗?

    例如 array 4 0 0 生成的数组必须具有固定长度 并且数组的总和也必须是固定的 获得此输出的最短且有效的方法是什么 允许导入函数 Output 4 0 0 0 4 0 0 0 4 3 1 0 0 3 1 1 0 3 1 3 0 0
  • 在 PDO 连接字符串中使用常量并通过 PDO 连接调用函数 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我在 PDO 连接中使用常量以及调用包含 PDO 连接
  • Angular $http.post 返回空错误

    我正在使用 Angular JS 将一些数据发送到 NodeJS 服务器 当我使用curl时 我取回了发送的数据 正确的结果 curl d MyKey My Value H Content Type application json htt
  • WMF / EMF 文件格式转换 C#

    在我的程序中 我需要 播放 或 解析 Windows 图元文件 WMF 和 EMF 我查遍了 MSDN 和 Google 最接近的是 Graphics 枚举元文件方法 我可以让它工作 因为我的 EnumerateMetafileProc 回
  • python win32gui查找子窗口

    例如首先你必须找到 Skype 的 hwnd hwnd win32gui FindWindow None skype 以及他所有的子窗口及其标题 child 任何想法 这段代码显示hwndEditPlus 子窗口的数量WindowsText
  • 如何使用关键字选择最小值

    我已经创建了表 Stu dep det CREATE TABLE stu dept cs s d id int 10 unsigned NOT NULL auto increment stu name varchar 15 gender v
  • 如何防止文档类型被添加到 HTML 中?

    我一直在用 DOM 处理这个 tidy up messy html 标签 但现在我意识到一个更大的问题 content p a href this is a link a p function tidy html content allow