如何从字符串中去除特定标签和特定属性?

2023-12-12

事情是这样的,我正在做一个项目来帮助人们教授 HTML。我自然是害怕史蒂夫那个渣男(见图1)。

所以我想阻止ALLHTML 标签,except那些在非常具体的情况下批准的白名单.

在那些已批准的 HTML 标签中,我想删除有害的属性以及。例如onload and onmouseover. Also, 根据一个白名单.

我考虑过正则表达式,但我很确定它是邪恶的并且对工作没有多大帮助。

有人能给我一个正确的方向吗?

提前致谢。


Fig 1.

Scumbag Steve


  • demo: http://so.devilmaycode.it/how-to-strip-specific-tags-and-specific-attributes-from-a-string/
require_once 'library/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();

 // this one is needed cause otherwise stuff 
 // considered harmful like input's will automatically be deleted
$config->set('HTML.Trusted', true);

// this line say that only input, p, div will be accepted
$config->set('HTML.AllowedElements', 'input,p,div');

// set attributes for each tag
$config->set('HTML.AllowedAttributes', 'input.type,input.name,p.id,div.style');

// more extensive way of manage attribute and elements... see the docs
// http://htmlpurifier.org/live/configdoc/plain.html
$def = $config->getHTMLDefinition(true);

$def->addAttribute('input', 'type', 'Enum#text');
$def->addAttribute('input', 'name', 'Text');

// call...
$purifier = new HTMLPurifier($config);

// display...
$html = $purifier->purify($raw_html);
  • NOTE:正如您所要求的,此代码将作为白名单运行,仅接受输入、p 和 div,并且仅接受某些属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从字符串中去除特定标签和特定属性? 的相关文章

  • 如何在 PHP 中通过 array_map(...) 使用数组的数组? [复制]

    这个问题在这里已经有答案了 PHP 函数array map http php net manual en function array map php期望回调作为第一个参数 或null for 创建数组的数组 http php net ma
  • 在 html 中显示表单时使用 table 标签是不是不好的设计?

    我一直听到这样的话div标签应该用于布局目的 而不是table标签 那么这也适用于表单布局吗 我知道表单布局仍然是一个布局 但似乎使用以下命令创建表单布局divs 需要更多html and css 因此 考虑到这一点 表单布局应该使用div
  • 更改 Symfony2 中的默认语言环境

    我正在尝试更改应用程序的默认区域设置 到目前为止我尝试过的事情 将 intl default locale 设置为 et EE 将区域设置设置为 et app config parameters ini 更改了我的捆绑包 boot 方法中描
  • 让两个按钮彼此相邻

    我的设计有问题 我的产品页面上有两个按钮 然而 由于其中一个处于表格中 因此它们彼此叠置 参见图片 我想让这两个按钮彼此相邻 有人可以帮我吗 下面我添加了 HTML 和 CSS 代码 提前致谢 HTML div class containe
  • 如何使用 MySQL 和 PHP 在数据库中存储标签?

    我想创建一个数据库来存储用户为其问题输入的标签 然后为发布的每个单独问题显示所有标签 像这里这样的东西 这是现在为我做所有事情的表 CREATE TABLE questions tags id INT UNSIGNED NOT NULL A
  • 使 bootstrap popover 使用自定义 html 模板

    我正在使用输入组文本框 我需要 Bootstrap 3 弹出框才能工作 并且弹出框模板应由我定义和设计 所以我目前拥有的 html 是 div class row div class col sm 2 div class input gro
  • 编写XSL对xml数据执行一些操作

    如何在 products xsl 正文中编写 xsl 以获取数量 gt 10 的产品名称和状况 产品 xml
  • 粉碎一个元素,向随机方向发送碎片

    我试图 粉碎 一个元素 例如 一个图像 并将其碎片朝随机方向飞行 当碎片到达目的地时 即x距离 以像素为单位 它们变成原始图像的较小版本 jQuery UI 的explode http api jqueryui com explode ef
  • K2_内容模块评级

    我一直在category item php 中重建标准K2 评级 以查看评级从显示为星星到显示为数字 我所做的是 我替换了这段代码 div div class itemRatingForm ul class itemRatingList l
  • 更改 3 列显示的比例:表格/表格单元格

    我有这个简单的设置 container display table width 70 text align center div border 1px solid 336 column display table cell div clas
  • 搜索多个表 (SQL)

    我需要能够有一个 SQL 查询来使用简单的搜索来搜索我的数据库 这是我的表格现在的样子 Table artists id name Table albums id artistID name Table songs id albumID n
  • 标记内的值发生变化时调用函数

    JavaScript 有没有什么方法可以在段落标记的值更改时调用函数 概述 HTML p 00 00 p
  • 错误:SQLSTATE[HY000] [2002] 无法建立连接,因为目标计算机主动拒绝连接

    当我调试代码时突然发生错误 它有一系列关于数据库连接的错误 ERROR SQLSTATE HY000 2002 No connection could be made because the target machine actively
  • jQuery 如何通过不同的列值计算表中的行数

    如何按表列计算不同的表行 Example table thead tr th NAME th th TECHNOLOGY th tr thead tbody tr td john td td jQuery td tr tr td mark
  • 跟踪 PHP 对象属性更改

    我正在尝试跟踪对 PHP 变量所做的所有更改 该变量可以是对象或数组 例如 它看起来像 object array a b 然后使用对象缓存将该对象持久保存到存储中 当php脚本再次运行时 因此 当脚本第二次运行时 或者另一个脚本运行并修改该
  • IE 上具有最小宽度的内联跨度

    Hi我有 3 个SPAN那一定是inline并且有和一个min width 显然在 IE 上 SPAN不能有一个min width 我尝试使用DIV但当我把它放在inline the min width是忽略 CSS span displa
  • 删除 cookie php

    我正在尝试创建一个带有登录系统的平台 并将用户名和密码存储在cookie中 以使用户即使关闭浏览器然后再次输入也能保持登录状态 我设法保存了cookie 但我不知道如何制作注销按钮 这是代码 function logout body app
  • Firefox 和 Chrome 为 offsetTop 提供了不同的值

    我试图相对于输入字段定位一个跨度元素 让我们称之为 工具提示跨度 为此 我将工具提示跨度和输入字段包装在另一个跨度元素中 我们称之为 包装器跨度 该元素具有position relative 然后我设置position absolute在工
  • Bootstrap - 为反向行模式创建移动自适应

    我想用 Bootstrap 创建一个反向效果 第一行 左边是文字 右边是图像 第二行 左边是图片 右边是文字 第三行 左边是文字 右边是图片 第四行 左边是图片 右边是文字 而且这种情况一直持续下去 它在大型设备上看起来非常漂亮 但当它在设
  • 使用 BASH 和 AWK 创建 HTML 表

    我在创建 html 表来显示文本文件中的统计信息时遇到问题 我确信有 100 种方法可以做得更好 但这里是 以下脚本中的注释显示了输出 bin bash function getapistats curl s http api exampl

随机推荐

  • 无需清除即可重新喷漆

    我正在开发一个模仿 Paint 的程序 问题是当我绘制新形状时 以前的形状会被删除 我试图注释掉我对paintComponents的超级调用 它可以工作 但留下了太多的绘图 import java awt Color import java
  • Jersey Multipart - 缺少起始边界

    我有一个带有 Netty 的 jersy 2 13 服务器应用程序 我尝试上传带有 multipart form data 的文件 但出现此错误 错误信息 7605 10 01 49 309 child group 3 1 org jvne
  • SQL自动增量id具有重复值和多列主键?

    CREATE TABLE Apps id int NOT NULL company varChar 20 NOT NULL name varChar 20 NOT NULL CONSTRAINT company app id PRIMARY
  • Go 中的通用哈希图

    我正在尝试制作一个包装纸map输入以便我可以添加一些方法 例如contains 这几乎让我怀念Java 但是 我不知道我是否可以在Java中做类似泛型的事情 虽然我读过的几乎所有内容都说 Go 没有泛型类型 但肯定有一种更好的方法 而不是为
  • 如何仅使用私钥文件创建java密钥库?

    我只有一个私钥作为 key 文件 没有其他 crt 或 ca 内容 我需要用它创建一个 java 密钥库 如何转换呢 到目前为止我尝试过的 我将 key 文件重命名为 pem 我使用 openssl 从 pem 中创建了 p12 文件 最后
  • 使用 Gnome-Shell JS 接口获取联系人列表

    我刚刚开始摆弄编写 gnome shell 扩展 并且想知道如何获取用户的联系人列表 我已经找到了一些可能的文件 gnome shell js ui contactDisplay js and gnome shell src shell c
  • 将命令输出解析为变量 LIVE(网络流量监控)

    我正在用 bash 编写一个网络监控脚本 我使用的基本命令是ettercap T M ARP i en1 然后我用管道egrep color Host GET 进去 我得到的示例输出如下所示 GET images srpr logo11w
  • 如何比较sql中的长文本和日期值?

    我以 dd mm yyyy 格式存储日期值作为长文本 我需要将此值与CURDATE 在一个SELECT陈述 请不要问我为什么要以长文本形式保存 有什么办法可以做到吗 这段代码当然不起作用 但它说明了我想要做的事情 WHERE longtex
  • UWP 尝试使用附加的依赖属性对滚动查看器进行动画处理

    我正在尝试在 UWP 中对滚动查看器的水平偏移进行动画处理 但动画目标未识别附加属性
  • 为什么 DateTime.ToString("dd/MM/yyyy") 给我 dd-MM-yyyy ?

    我希望将我的日期时间转换为格式为 dd MM yyyy 的字符串 每当我使用它进行转换时DateTime ToString dd MM yyyy I get dd MM yyyy反而 我必须设置某种文化信息吗 斜杠是日期分隔符 因此将使用当
  • 如何找出 .net 类实现了哪些接口?

    好的 我最近一直在学习 c 和 net c 文档中似乎缺少一件事http msdn microsoft com java 文档中存在 例如数组列表文档 是一个java类的文档会这样说 所有实现的接口 可序列化 可克隆 可迭代 集合 列表 随
  • 如何禁用 grails 中的 log4j 插件?

    看来Grails 2 1 log4j 插件在 grails 应用程序初始化期间重置 log4j 配置 请参阅下面的堆栈跟踪 at org apache log4j LogManager resetConfiguration LogManag
  • 使用 Spark 从 Scala 中的 Dataframe 中的数组列中删除 null (1.6)

    我有一个带有 id 列的数据框和一个具有结构数组的列 架构 root id string nullable true desc array nullable false element struct containsNull true na
  • 提交 HTML 表单后,如何使用 FastAPI 将用户重定向回主页?

    我有一个包含学生表格的页面 我添加了一个按钮 允许您向表中添加新行 为此 我将用户重定向到带有输入表单的页面 问题是 提交完成的表单后 用户会转到一个新的空白页面 如何传输已完成表单中的数据并将用户重定向回表格 我刚刚开始学习Web编程 所
  • Eclipse 插件 - 如何获取编辑器的最后工作

    我正在编写一个 Eclipse 插件 它通过几个按钮向用户公开一个视图 单击任何按钮时 我想将特定注释粘贴到用户当前正在工作的编辑器窗口中以及他指向的光标位置 一旦用户单击该按钮 编辑器窗口就不再具有焦点 并且以下代码不起作用 workbe
  • 来自参数的 Azure 数据工厂源数据集值

    我在 Azure Datafactory 中有一个由 CSV 文件支持的数据集 我在数据集中添加了一个附加列 并希望从数据集参数传递它的值 但值永远不会复制到该列 type AzureBlob structure name MyField
  • 在 where 子句中使用局部变量的替代方法

    我有一个查询 其中有一个使用多个局部变量构建的 where 子句 但这非常慢 以下是一个粗略的示例 因为我当前无权访问该查询 declare a varchar 50 b varchar 50 c varchar 50 set a set
  • 如何配置 ESLint 以允许粗箭头类方法

    ESLint 正在抛出一个Parsing error Unexpected token 当我尝试 lint 我的 Es6 类时出错 我缺少什么配置参数来启用 eslint 中的胖箭头类方法 示例类 class App extends Rea
  • 在 Haskell 中如何轮询文件、套接字或句柄以使其可读/可写?

    我如何从 Haskell 观看多个文件 套接字并等待它们变得可读 可写 Haskell 中有类似 select epoll 的东西吗 或者我被迫为每个文件 套接字生成一个线程 并始终使用该线程内的阻塞资源 这个问题是错误的 你不是force
  • 如何从字符串中去除特定标签和特定属性?

    事情是这样的 我正在做一个项目来帮助人们教授 HTML 我自然是害怕史蒂夫那个渣男 见图1 所以我想阻止ALLHTML 标签 except那些在非常具体的情况下批准的白名单 在那些已批准的 HTML 标签中 我想删除有害的属性以及 例如on