今天有个项目需要做评论的功能,而评论的功能都希望纯文本的内容就可以了,可就有些不按规矩办事的人,经常来发链接,发广告,最讨厌的就是这样的人了。
1:删除全部或者保留指定html标签(使用php自带的函数(strip_tags)就可以解决了)
使用方法:strip_tags(string,allow),
string:需要处理的字符串;
allow:需要保留的指定标签,可以写多个;
echo strip_tags($str,'<a><b>');
此函数的优点是就比较简单,可以删掉掉标签,但是缺点也有;如果有一大堆标签;而我只是想删除指定的某一个;那要写很多需要保留的标签;
2:删除指定的html标签,都是使用正则表达式(不是系统自带函数)
strip_html_tags($tags,$str);
$tags:需要删除的标签(数组格式)
$str:需要处理的字符串;
function strip_html_tags($tags,$str){ $html=array(); foreach ($tags as $tag) { $html[]="/(<(?:\/".$tag."|".$tag.")[^>]*>)/i"; } $data=preg_replace($html, '', $str); }
3:删除标签和标签的内容,都是使用正则表达式(不是系统自带函数)
使用方法:strip_html_tags($tags,$str);
$tags:需要删除的标签(数组格式)
$str:需要处理的字符串;
function strip_html_tags($tags,$str){ $html=array(); foreach ($tags as $tag) { $html[]='/(<'.$tag.'.*?>[\s|\S]*?<\/'.$tag.'>)/'; } $data=preg_replace($html,'',$str); }
最后把上面的所有功能函数都整合在一起,大家就直接复制调用就可以了。
使用方法:strip_html_tags($tags,$str,$content);
$tags:需要删除的标签(数组格式)
$str:需要处理的字符串;
$ontent:是否删除标签内的内容 0保留内容 1不保留内容
/** * 删除指定的标签和内容 * @param array $tags 需要删除的标签数组 * @param string $str 数据源 * @param string $content 是否删除标签内的内容 默认为0保留内容 1不保留内容 * @return string */ function strip_html_tags($tags,$str,$content=0){ if($content){ $html=array(); foreach ($tags as $tag) { $html[]='/(<'.$tag.'.*?>[\s|\S]*?<\/'.$tag.'>)/'; } $data=preg_replace($html,'',$str); }else{ $html=array(); foreach ($tags as $tag) { $html[]="/(<(?:\/".$tag."|".$tag.")[^>]*>)/i"; } $data=preg_replace($html, '', $str); } return $data; }