加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何以比使用strip_tags函数更安全的方式剥离标签?

发布时间:2020-12-13 17:57:53 所属栏目:PHP教程 来源:网络整理
导读:当字符串包含’小于’和’大于’符号时,我在使用strip_tags PHP函数时遇到一些问题.例如: 如果我做: strip_tags("spansome text 5ml and then 10ml some text /span"); 我去拿: some text 10ml some text 但是,显然我想得到: some text 5ml and then 10m
当字符串包含’小于’和’大于’符号时,我在使用strip_tags PHP函数时遇到一些问题.例如:

如果我做:

strip_tags("<span>some text <5ml and then >10ml some text </span>");

我去拿:

some text 10ml some text

但是,显然我想得到:

some text <5ml and then >10ml some text

是的我知道我可以使用& lt;和& gt;,但我没有机会将这些字符转换为HTML实体,因为数据已经存储,如您在我的示例中所见.

我正在寻找的是一种解析HTML的聪明方法,以便只删除实际的HTML标记.

由于TinyMCE用于生成该数据,我知道在任何情况下都可以使用哪些实际的html标记,因此strip_tags($string,$black_list)实现比strip_tags($string,$allowable_tags)更有用.

有没有?

作为古怪的解决方法,您可以使用以下方法过滤非html括号:
$html = preg_replace("# <(?![/a-z]) | (?<=s)>(?![a-z]) #exi","htmlentities('$0')",$html);

之后应用strip_tags().请注意这仅适用于您的特定示例和类似情况.这是一个带有一些启发式的正则表达式,而不是人工智能从未转义的尖括号中辨别出其他含义的html标签.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读