我们知道php自带的函数strip_tags即可满足我们删除html标签。
此函数的优点是简单粗暴,但是缺点也很明显,如:
1、如果有一大堆标签,而我只是想删除指定的某一个,那要写很多需要保留的标签。
那么来自己写一个方法实现一下我们日常最实用的删除html标签方法。
strip_tags():删除全部或者保留指定html标签 【PHP系统自带函数】
此函数的优点是简单粗暴,但是缺点也很明显,如:
1、如果有一大堆标签,而我只是想删除指定的某一个,那要写很多需要保留的标签。
/*--------------删除全部或者保留指定html标签(标签的内容会被保留)-----------------*/ $str = '<div><p>P标签</p><img src="" alt="IMG标签"><a href="">这里是A标签</a><br></div>'; echo strip_tags($str, '<p><a>'); //输出: <p>P标签</p><a href="">这里是A标签</a>
strip_html_tags01():删除指定的html标签(标签的内容会被保留) 【自写方法】
调用这个方法,传入需要删除的html标签就可以了。
避免了:如果有一大堆标签,而我只是想删除指定的某一个,那要写很多需要保留的标签。
如果我们删除的标签里有内容,我们又想一起删除怎么办。
/*------------------删除指定的html标签(标签的内容会被保留)------------------*/ $str = '<div><p>P标签</p><img src="" alt="img标签"><a href="">这里是A标签</a><br></div>'; function strip_html_tags01($tags, $str){ $html=array(); foreach ($tags as $tag) { $html[] = "/(<(?:\/" .$tag. "|" .$tag. ")[^>]*>)/is"; } $data=preg_replace($html, '', $str); return $data; } echo strip_html_tags01(array('p', 'img', 'br'), $str); //输出: <div>P标签<a href="">这里是A标签</a></div>
strip_html_tags02():删除指定的html标签(标签的内容不会被保留) 【自写方法】
调用这个方法,传入需要删除的html标签就可以了。
这样可以一起删除掉标签里的内容了。
但是现在所写都是针对单个需求写的,那么我们整合到一个方法里不是很好,当然。
/*------------------删除指定的html标签(标签的内容不会被保留)------------------*/ $str = '<div><p>P标签</p><img src="" alt="img标签"><a href="">这里是A标签</a><br></div>'; function strip_html_tags02($tags, $str){ $html=array(); foreach ($tags as $tag) { $html[]='/<' .$tag. '.*?>[\s|\S]*?<\/' .$tag. '>/is'; $html[]='/<' .$tag. '.*?>/is'; } $data=preg_replace($html, '', $str); return $data; } echo strip_html_tags02(array('p', 'img'), $str); //输出: <div><a href="">这里是a标签</a><br></div>
stripHtmlTags():删除指定的html标签(是否需要保存标签的内容:可选) 【自写方法】
/*---------------- 删除指定的html标签(标签的内容:是否需要保存可选)-------------*/ $str = '<div><p>P标签</p><img src="" alt="img标签"><a href="">这里是A标签</a><br></div>'; /** * 删除指定标签 * @param array $tags 删除的标签 * @param string $str html字符串 * @param bool $type 是否保留标签的内容 * @return mixed */ function stripHtmlTags($tags, $str, $content=false) { $html = []; if($content){ foreach ($tags as $tag) { $html[] = "/(<(?:\/" .$tag. "|" .$tag. ")[^>]*>)/is"; } }else{ foreach ($tags as $tag) { $html[] = '/<' .$tag. '.*?>[\s|\S]*?<\/' .$tag. '>/is'; $html[] = '/<' .$tag. '.*?>/is'; } } $data = preg_replace($html, '', $str); return $data; } del_tags( stripHtmlTags(array('a','img','br'), $str, false) ); //输出: <div><p>这里是p标签</p></div>
那么在实际中,推荐大家用最后这个方法:stripHtmlTags()!
转载请注明来源地址:小川编程 » https://www.youhutong.com/index.php/article/index/195.html
1、本站发布的内容仅限用于学习和研究目的.请勿用于商业或非法用途,下载后请24小时内删除。
2、本站所有内容均不能保证其完整性,不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用
3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意