DOMDocument 删除 JavaScript 字符串中的 HTML 标签

2024-03-19

我开发 PHP 应用程序已经有一段时间了。但这确实让我很挣扎。我正在使用 DomDocument 加载完整的 HTML 页面。这些页面是外部页面,可能包含 JavaScript。这超出了我的控制范围。

在某些页面上,当涉及到 JavaScript 字符串中的基本 HTML 格式时,内容并未按照预期的方式呈现。我写了一个例子来解释这一切。

<?php
$html = new DOMDocument();

libxml_use_internal_errors(true);

$strPage = '<html>
<head>
<title>Demo</title>
<script type="text/javascript">
var strJS = "<b>This is bold.</b><br /><br />This should not be bold. Where did my closing tag go to?";
</script>
</head>
<body>
<script type="text/javascript">
document.write(strJS);
</script>
</body>
</html>';

$html->loadHTML($strPage);
echo $html->saveHTML();
exit;
?>

我错过了什么吗?

编辑:我已经更改了演示。将 LoadHTML 更改为 LoadXML 现在不再起作用,演示的输出将通过 w3c 验证。另外,将 CDATA 块添加到 JavaScript 似乎没有任何效果。


Adding LIBXML_SCHEMA_CREATE to loadHTML()选项将解决该问题。

<?php
$html = new DOMDocument();

libxml_use_internal_errors(true);

$strPage = '<html>
<head>
<title>Demo</title>
<script type="text/javascript">
var strJS = "<b>This is bold.</b><br /><br />This should not be bold. Where did my closing tag go to?";
</script>
</head>
<body>
<script type="text/javascript">
document.write(strJS);
</script>
</body>
</html>';

$html->loadHTML($strPage, LIBXML_HTML_NODEFDTD | LIBXML_SCHEMA_CREATE);
echo $html->saveHTML();
exit();


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

DOMDocument 删除 JavaScript 字符串中的 HTML 标签 的相关文章

  • IE 中的 HR 标签 - 删除边框

    在除 IE7 及更低版本之外的其他浏览器中 hr 在 hr 标签周围显示边框 但我不希望它出现 我已经尝试过这个解决方案 但它周围似乎仍然有边框 它看起来像这样 我该如何摆脱它 See http webdesign about com od
  • 扩展位置绝对div超出溢出隐藏div

    我已经好几个月没有做过CSS了 所以我可能会错过一些简单的东西 但无论解决方案是什么 我都无法弄清楚 所以问题就在这里 这是我的代码的简化版本 div style height 100 width 200px div style margi
  • 如何在没有引用的情况下复制对象?

    PHP5 OOP 有据可查对象通过引用传递 http php net manual en language oop5 references php默认情况下 如果这是默认的 在我看来 有一种非默认的方式可以在没有参考的情况下进行复制 如何
  • html css 下拉菜单

    这是我第一次在 Stack Overflow 上发帖 我不熟悉论坛发帖规定 所以请让我知道我做错了什么 我在论坛中研究过这个问题 但我所遇到的一切都没有给我明确的答案 我试图从 新闻 元素创建一个下拉菜单 但在运行代码时我从未得到任何可见的
  • Django - 提交具有同一字段多个输入的表单

    预警 我对 Django 以及一般的 Web 开发 非常陌生 我使用 Django 托管一个基于 Web 的 UI 该 UI 将从简短的调查中获取用户输入 通过我用 Python 开发的一些分析来提供输入 然后在 UI 中呈现这些分析的可视
  • 计算文本选择的 xy 位置

    我正在尝试使用 DOM 元素创建自己的文本选择 是的 我的意思是当您在此元素中选择文本时 您会在文本后面看到蓝色背景 这个想法是停止默认行为 蓝色 并使用我自己的元素来完成工作 方法是找到选择的 xy 位置 然后放置绝对定位的元素 我希望能
  • 禁用特定 div 上的 Tab 键

    我有以下结构 div div Some content div div Some content div div 我想 禁用 div2 上的 tab 键 我的意思是按下 tab 键时 div2 的元素不会获得焦点 有没有简单的方法可以使用
  • 从 DirectionsRenderer 中获取折线或标记的事件

    我正在使用 DirectionsService 和路线方法来生成 DirectionsResult 我还使用 DirectionsRenderer 对象来显示结果 因为它非常易于使用 我在检测 Directions changed 事件时没
  • JavaScript 数组扩展语法的时间复杂度是多少?

    我想知道在 JavaScript 中使用数组扩展的时间复杂度是多少 是线性 O n 还是常数 O 1 下面的语法示例 let lar Math max nums 传播称为 Symbol iterator 有关对象的属性 对于数组 这将迭代数
  • Zend Framework Zend_Form 装饰器: 位于按钮元素内部?

    我有一个像这样创建的按钮元素 submit new Zend Form Element Button submit submit gt setLabel My Button submit gt setDecorators array Vie
  • 尝试在 React 应用程序中连接到 MySQL 数据库时,无法读取未定义的属性(读取“查询”)错误

    我正在尝试连接到 MySQL 数据库并在单击按钮后在 React 应用程序中运行查询 一些它如何给出错误 我当前的代码如下所示 import mysql from mysql function App async function sync
  • 元素和 svg 形状之间的白线

    大家好 我正在使用由 shapedivider 生成的 svg 整形器 您可以看到 有一条白线 我不知道为什么它在那里以及如何删除它 请你帮助我好吗 有形状分隔符的代码 custom shape divider bottom 1640714
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开
  • HTML 输入 - 名称与 ID [重复]

    这个问题在这里已经有答案了 使用 HTML 时
  • mozilla pdf.js 没有全视图

    我喜欢这个 pdf 查看器https github com mozilla pdf js https github com mozilla pdf js Demo http mozilla github com pdf js web vie
  • JavaScript:测试与执行

    我想知道检查字符串 例如邮件 密码等 的最佳方法是什么 i exec a vs i test a exec返回值 test true test 1 way var mail req body mail if check mail exec
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘
  • PHP 和 NLP:嵌套括号(解析器输出)到数组?

    想要将带有嵌套括号的文本转换为嵌套数组 以下是 NLP 解析器的输出示例 TOP S NP PRP I VP VBP love NP NP DT a JJ big NN bed PP IN of NP NNS roses 原文 我喜欢一大床
  • 在 PHP 中模拟 jQuery.ajax 请求

    我必须在 PHP 中模拟 AJAX 请求 就像在 jQuery 中一样 我当前的代码在这里 原始 AJAX 调用 不得修改 ajax type POST url someFile php data data success function
  • 从输入类型编号获取无效值

    我正在使用输入类型数字 当它无效时 我如何从中获取值 例如 使用类型编号并仅打印 e 这本身是无效的 我正在使用 React 但我认为这个问题非常普遍 onChange event console log event target valu

随机推荐

  • R 噩梦:Yosemite、R、RStudio 和 Homebrew

    我使用配备 OS X Yosemite 10 10 2 的 MacBook Pro 13 Retina 2013 年末 我不希望我最大的敌人遇到这种情况 也许吧 噩梦按时间顺序排列 从官方网站下载 R 和 RStudio 运行这两个应用程序
  • 将数组数据分解为spark中的行[重复]

    这个问题在这里已经有答案了 我有一个数据集 如下所示 FieldA FieldB ArrayField 1 A 1 2 3 2 B 3 5 我想爆炸数据数组字段所以输出将如下所示 FieldA FieldB ExplodedField 1
  • 提高 Python Tesseract OCR 的准确性

    我在用pytesseract https pypi org project pytesseract 随着openCV https pypi org project opencv python 在 Python 中的简单 django 应用程
  • 无法使用 Apache FOP 生成 PDF

    我正在尝试使用 Apache FOP 使用 XML 数据和 XSL 样式表创建 PDF 但我不断收到以下错误 org apache fop apps FOPException org apache fop fo ValidationExce
  • 显示寄存器内容

    您好 我需要帮助显示寄存器的内容 我的代码如下 我已经能够显示数据寄存器的值 但我想显示标志状态 例如 1 或 0 如果还显示其他寄存器 如 esi ebp 的内容 将会很有帮助 我的代码没有打印标志的状态 我缺少什么 section te
  • 清除回发时的查询字符串

    简单的问题 但我不知道该怎么做 我有一个带有 GridView 的页面 最初使用查询字符串填充 获取查询字符串值后 我不需要查询字符串 因为我使用 DropDownList 的值来填充 GridView 我怎样才能摆脱它 回发并不能清除它
  • 以编程方式将列表作为 Web 部件插入 WSS 3.0 中的 Web 部件页面中

    我尝试在网上搜索以编程方式将列表作为 Web 部件插入到 Web 部件页面中 但不够幸运 我有什么想法或想法以编程方式将列表作为 Web 部件插入到 Web 部件页面中 非常感谢 首先添加这些 using 语句 using Microsof
  • 使用插件 dsl 语法应用 hibernate-gradle-plugin?

    我想用org hibernate hibernate gradle plugin在我的项目中使用插件 dsl 风格 这是我的build gradle kts插件部分 plugins kotlin jvm version 1 3 31 id
  • 如何解析 .msstyles 文件?

    我需要从 msstyles 文件 Windows XP 视觉样式文件 中提取一些位图 但我不知道从哪里开始 我似乎找不到任何有关如何执行此操作的文档 并且文件格式似乎是二进制的并且不容易解析 我已经能够使用以下方法自行提取位图 IntPtr
  • 在 javascript 中更改 RGB 颜色的色调

    如同this https stackoverflow com questions 6443990 javascript calculate brighter colour 如何增加亮度 我想更改 RGB 十六进制 颜色的色调 Say cha
  • 获取 woocommerce 类别及其子类别

    我想在前端获取所有 woocommerce 类别 其子类别如下结果 ul li a href Link a ul li a href Submenu link a li ul li ul 这是我所拥有的 但这不是我想要的
  • 如何在 Django 1.7 中重置迁移

    我知道有一个与此相同的标题 但问题不同 我设法使我的开发机器迁移和生产迁移不同步 我有一个使用 South 的 Django 应用程序 我有自己的工作流程 运行良好 这可能不是正确的做事方式 但我没有遇到任何问题 基本上我有一个脚本将生产数
  • 使用 Graph API 和 Android SDK 将图片上传到 Facebook

    我正在尝试使用 graph api 将照片上传到 facebook 但不断出现 OutOfMemory 异常 上传的代码是这样的 private void PostPhoto SessionHandler facebook Uri phot
  • Pyspark:如何过滤两列值对的列表?

    所以我有一个 PySpark Dataframe 我想用一个 长 有效列表来过滤它pairs两列 假设我们的数据框的名称是df和列col1 and col2 col1 col2 1 A 2 B 3 1 null 2 A null 2 nul
  • 在 Android 中处理 XML 的最佳方法是什么

    与 PC 服务器相比 Android 设备速度慢得多 内存也低得多 那么在 Android 中处理 XML 的最佳方法是什么 我有一组非常复杂的 xml 需要解析 SAX 或 DOM 都会导致代码过多 有人有好的建议吗 我想让它干净又快速
  • 将 Java.logging 扩展为另一个日志级别?

    我想知道是否可以将标准 java 记录器 java util logging Logger 扩展为另一个记录器级别 目标是 日志文件中应该显示 错误 而不是 严重 那可能吗 或者我必须使用不同的记录器 例如 Log4j 多谢 如果您只想打印
  • 如何在运行时检测某些编译器选项(如断言)是否设置为 ON?

    Delphi 中检查断言是否有效的条件是什么 当断言在代码中不活动时 我希望能够做一些事情来抑制有关未使用变量的提示 例如 procedure Whatever var v Integer begin v DoSomething Asser
  • UIBarButtonItem 具有单独的纵向和横向图像 - 从 UINavigationController 弹出视图控制器时不调用 layoutSubviews

    我想在 UINavigationController 的 UIToolbar 中显示完全自定义的按钮 并支持纵向和横向 目前我已经实现了一个RotatingButton UIView子类 类 其中包含一个填充整个RotatingButton
  • .net WP8.1/Win10 UWP:在 Visual Studio 设计器中找不到 MapControl 的命名空间

    编辑 使用 MapControl 时 在 Win 10 UWP 应用程序 VS2015 Win10 中也会出现下面描述的问题 我在 Windows Phone 8 1 通用应用程序 应用程序中使用 MapControl 时遇到一个奇怪的问题
  • DOMDocument 删除 JavaScript 字符串中的 HTML 标签

    我开发 PHP 应用程序已经有一段时间了 但这确实让我很挣扎 我正在使用 DomDocument 加载完整的 HTML 页面 这些页面是外部页面 可能包含 JavaScript 这超出了我的控制范围 在某些页面上 当涉及到 JavaScri