废话少说,直接上代码:
$str = ‘<p> 我是需要保留的文字 </p> <p> <br /> </p> <p> alsdkjf;laskjd;flasj; </p> <p> asdjfasjd;lkafsj;lfdkj </p> <p> aksdjfl;ak </p>‘; $subject = strip_tags($str);//去除html标签 $pattern = ‘/\s/‘;//去除空白 $content = preg_replace($pattern, ‘‘, $subject); //需要注意的是,如果是截取汉字的时候,mb_substr需要加UTF-8参数,否则会出现乱码 echo mb_substr($content, 0, 40,"UTF-8"); //截取40个汉字
在此,提一下htmlspecialchars函数和strip_tags函数的区别:
$str="<a href=‘http://www.manongjc.com‘>码农教程‘\"</a>"; echo htmlspecialchars($str); echo "<br/><br/>"; echo strip_tags($str);
浏览器输出结果:
审查元素你会发现:
从结果可以看出htmlspecialchars() 和strip_tags的区别如下:
区别一:
strip_tags函数使用来去除HTML标签的,而htmlspecialchars并没有去除html标签,只是把标签转换为HTML实例,所以二者之间最大的区别是一个是删除掉HTML标签,一个是将html标签转换为其他字符。
区别二:
如果需要去除HTML标签的字符串里面的标签原来就有错,例如少了大于的符号,在使用strip_tags函数会传回错误,而htmlspecialchars不会有错误出现,依然后转换为HTML实体。
区别三:
在防止XSS攻击时,一般建议使用htmlspecialchars函数,因为strip_tags虽然可以删除HTML标签,但是它不会删除"或‘。因此就算你使用了
strip_tags,仍然需要使用htmlspecialchars函数来过滤掉"或‘
在表单提交或用户留言板里,如果你希望数据原始输出带浏览器,那么请使用htmlspecialchars函数,不要使用strip_tags函数。
另外,在测试的时候发现了个很有趣的问题,在数据库里存的内容值是这样的:
$str = ‘<p> <br /> </p> <p> <img src="/Upload/image/2018-02-09/20180209132853_70302.gif" alt="" /> </p> <p style="color:#6C6969;font-family:&quot;font-size:14px;text-align:justify;background-color:#FFFFFF;"> 彭于晏真得是用尽了全力,他苦练了八个月,几乎每天都进行10个小时以上的体操练习,为了保持八块腹肌的身材,他只吃水煮餐,不加任何调料。 </p> <p style="color:#6C6969;font-family:&quot;font-size:14px;text-align:justify;background-color:#FFFFFF;"> <br /> </p>‘;
如果需要去除html标签时,需要用htmlspecialchars_decode函数处理一下,在使用strip_tags函数去除html标签。
原文地址:https://www.cnblogs.com/North-South/p/9021022.html
时间: 2024-11-09 01:00:45