详解PHP函数 strip_tags 处理字符串缺陷bug

详解PHP函数 strip_tags 处理字符串缺陷bug

PHP 函数 strip_tags() 是一个常用函数,该函数可以剥去字符串中的 HTML、XML 以及 PHP 的标签。极大方便了对字符串的操作,但是 strip_tags() 函数存在缺陷bug,由于 strip_tags() 无法验证 HTML 不完整或者破损标签将导致更多的数据被删除。

例子:

$str = '<div>string</div>string<string<b>hello</b><div>string</div>';

echo strip_tags($str, '<div>');

输出:

<div>string</div>string

通过 strip_tags 函数过滤 <b> 标签,其实我希望得到下面这个结果:

<div>string</div>string<stringhello<div>string</div>

导致我们未能得到所期望的结果,其实是因为字符串中第三个 string 左边那个尖括号,strip_tags 函数误删除了其他字符。

经过查找 PHP 相关文档发现 strip_tags 函数 有一个警告:由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数据被删除。

既然不能验证 HTML 标签完整性,遇到字符串中包含“<”或“>”导致误删字符串中其他字符。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • PHP关于htmlspecialchars、strip_tags、addslashes的解释

    PHP的htmlspecialchars.strip_tags.addslashes是网页程序开发中常见的函数,今天就来详细讲述这些函数的用法: 1.函数strip_tags:去掉 HTML 及 PHP 的标记 注意:本函数可去掉字串中包含的任何 HTML 及 PHP 的标记字串.若是字串的 HTML 及 PHP 标签原来就有错,例如少了大于的符号,则也会传回错误.而本函数和 fgetss() 有着相同的功能.fgetss是从文件中读取文件,并去掉html和php标记. 2.函数htmlspec

  • PHP strip_tags保留多个HTML标签的方法

    本文介绍了PHP strip_tags函数保留多个HTML标签的方法,可以使用第二个参数来设置不需要删除的标签,主要涉及到strip_tags的第二个参数 strip_tags 函数 语法 string strip_tags ( string str [, string allowable_tags] ) 返回一个去除了HTML标签的字符串:可以使用第二个参数来设置不需要删除的标签. 使用方法: 前提:假如现在有这样一个字符串, 复制代码 代码如下: $str = "<p>我来自&l

  • PHP strip_tags()去除HTML、XML以及PHP的标签介绍

    语法:strip_tags(string,allow);string必需,规定要检查的字符串.allow可选,规定允许的标签,这些标签不会被删除.注释:该函数始终会剥离HTML注释,这点无法通过allow参数改变. 实例:<?php    $str = "Hello <b><i>world</i></b>!";    echo strip_tags($str);    echo '<br />';    echo str

  • PHP函数strip_tags的一个bug浅析

    PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符.HTML 和 PHP 标记后的结果. 由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数据被删除. 比如下述代码: 复制代码 代码如下: <div>string</div>string<string<b>hello</b><div>string</div>

  • php 去除html标记--strip_tags与htmlspecialchars的区别详解

    strip_tags 去掉 HTML 及 PHP 的标记. 语法: string strip_tags(string str); 传回值: 字串 函式种类: 资料处理 内容说明 本函式可去掉字串中包含的任何 HTML 及 PHP 的标记字串.若是字串的 HTML 及 PHP 标签原来就有错,例如少了大于的符号,则也会传回错误.而本函式和 fgetss() 有着相同的功能. htmlspecialchars 将特殊字元转成 HTML 格式. 语法: string htmlspecialchars(

  • PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数

    strip_tags定义和用法 strip_tags() 函数剥去字符串中的 HTML.XML 以及 PHP 的标签. 注释:该函数始终会剥离 HTML 注释.这点无法通过 allow 参数改变. 注释:该函数是二进制安全的. 语法 strip_tags(string,allow) 参数 描述 string 必需.规定要检查的字符串. allow 可选.规定允许的标签.这些标签不会被删除. 技术细节 返回值: 返回被剥离的字符串. PHP 版本: 4+ 更新日志: 自 PHP 5.0 起,该函数

  • php使用strip_tags()去除html标签仍有空白的解决方法

    本文实例讲述了php使用strip_tags()去除html标签仍有空白的解决方法.分享给大家供大家参考,具体如下: $subject = strip_tags($newsRs['content']);//去除html标签 $pattern = '/\s/';//去除空白 $content = preg_replace($pattern, '', $subject); $seodata['articledescription'] = mb_substr($content, 0, 80);//截取

  • 详解PHP函数 strip_tags 处理字符串缺陷bug

    详解PHP函数 strip_tags 处理字符串缺陷bug PHP 函数 strip_tags() 是一个常用函数,该函数可以剥去字符串中的 HTML.XML 以及 PHP 的标签.极大方便了对字符串的操作,但是 strip_tags() 函数存在缺陷bug,由于 strip_tags() 无法验证 HTML 不完整或者破损标签将导致更多的数据被删除. 例子: $str = '<div>string</div>string<string<b>hello</b

  • 详解Go语言如何实现字符串切片反转函数

    目录 Python 中的 reverse 函数 实现一个 reverse 反转函数 利用两个切片实现 前后两两原地交换 反转为原切片的副本 总结 Python 中的 reverse 函数 Go 语言不像其他语言如 Python,有着内置的 reverse() 函数,先来看一下 Python 中对于列表的反转方法,然后我们再来学习如果在 Go 语言中实现相同的功能. >>> myList = [2022, 2021, 2008, 2012] >>> myList.reve

  • 详解Python 函数参数的拆解

    本文为阅读 <Python Tricks: The Book>一书的 3.5 Function Argument Unpacking 的笔记与扩充理解.函数参数拆解是定义可变参数(VarArgs) *args 和 **kwargs 的反向特性. *args 和 **kwars 是函数可定义一个形参来接收传入的不定数量的实参. 而这里的函数参数拆解是形参定义多个,在调用时只传入一个集合类型对象(带上 * 或 ** 前缀),如 list, tuple, dict, 甚至是 generator, 然

  • 详解shell 函数定义与调用

    一.Shell函数定义格式 shell函数定义格式,各部分说明如下: [ function ]等中括号括起来部分----表示可选(即可有可无) your_function_name部分----为函数名 your_shell_commands部分----为函数代码:shell一般以行为单位,但可以使用"\"换行,也可以在单行内使用";"作为分隔符 return int部分----shell函数可以有返回值,但只能返回整数不能返回字符串 [ function ] you

  • 深入详解JS函数的柯里化

    一.补充知识点之函数的隐式转换 来一个简单的思考题. function fn() { return 20; } console.log(fn + 10); // 输出结果是多少? 稍微修改一下,再想想输出结果会是什么? function fn() { return 20; } fn.toString = function() { return 10; } console.log(fn + 10); // 输出结果是多少? 还可以继续修改一下. function fn() { return 20;

  • 详解Python函数print用法

    print函数: Python中可以直接使用的函数,可以将信息展示在控制台 print()函数可以输出哪些内容? print()函数输出的内容可以是数字 #可以输出数字 print(520) print(98.6) print()函数输出的内容可以是字符串 #可以输出字符串 print('Hello World') print("Hello World") print()函数输出的内容可以是含有运算符的表达式 #可以输出含有运算符的表达式 print(3+1) print()函数可以将

  • C语言详解strcmp函数的分析及实现

    目录 1.函数介绍 1.1.函数接口 1.2.函数分析 1.3.函数的简单使用 1.4.函数使用结果分析 2.库函数strcmp源代码 2.1.库函数源代码 2.2.库函数分析 3.模拟实现 strcmp 函数 3.1.模拟实现 3.2.模拟实现分析 1.函数介绍 1.1.函数接口 int __cdecl strcmp (const char * src,const char * dst); 这里是库函数里面的函数定义接口.这个函数是将 src 和 dst 两个字符串进行比较,即为字符串比较函数

  • 详解Python中神奇的字符串驻留机制

    目录 1 什么是字符串驻留机制 2 如何使用字符串驻留机制 3 简单拼接驻留, 运行时不驻留 4 总结 5 全部代码 今天有一个初学者在学习Python的时候又整不会了. 原因是以下代码: a = [1, 2, 3] b = [1, 2, 3] if a is b: print("a and b point to the same object") else: print("a and b point to different objects") 运行结果是a an

  • mysql count详解及函数实例代码

    mysql count详解 count函数是用来统计表中或数组中记录的一个函数,下面我来介绍在mysql中count函数用法. count(*) 它返回检索行的数目, 不论其是否包含 NULL值. SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度. 例如: mysql> SELECT COUNT(*) FROM student; COUNT(DISTINCT 字段)这个优化仅适用于 MyISAM表, 原因是这些表类型会储存一个函

  • 详解JS函数防抖

    一.什么是函数防抖 概念:函数防抖(debounce),就是指触发事件后,在 n 秒内函数只能执行一次,如果触发事件后在 n 秒内又触发了事件,则会重新计算函数延执行时间. 举个栗子,坐电梯的时候,如果电梯检测到有人进来(触发事件),就会多等待 10 秒,此时如果又有人进来(10秒之内重复触发事件),那么电梯就会再多等待 10 秒.在上述例子中,电梯在检测到有人进入 10 秒钟之后,才会关闭电梯门开始运行,因此,"函数防抖"的关键在于,在 一个事件 发生 一定时间 之后,才执行 特定动

随机推荐