经常扒别人网站文章的坑们;
我是指那种批量式采集的压根不看内容的;
少不了都会用到删除html标签的函数;
这里介绍3种不同用途上的方法;
1
|
$str = '<div><p>这里是p标签</p><img src="" alt="这里是img标签"><a href="">这里是a标签</a><br></div>' ; |
1:删除全部或者保留指定html标签
php自带的函数strip_tags即可满足要求,
使用方法:
strip_tags(string,allow);
string:需要处理的字符串;
allow:需要保留的指定标签,可以写多个;
1
2
|
echo strip_tags ( $str , '<p><a>' ); //输出:<p>这里是p标签</p><a href="">这里是a标签</a> |
此函数的优点是简单粗暴;
但是缺点也很明显;
如果有一大堆标签;
而我只是想删除指定的某一个;
那要写很多需要保留的标签;
所以有了第二个方法;
2:删除指定的html标签
使用方法:strip_html_tags($tags,$str);
$tags:需要删除的标签(数组格式)
$str:需要处理的字符串;
1
2
3
4
5
6
7
8
9
10
|
function strip_html_tags( $tags , $str ){ $html = array (); foreach ( $tags as $tag ) { $html []= "/(<(?:\/" . $tag . "|" . $tag . ")[^>]*>)/i" ; } $data =preg_replace( $html , '' , $str ); return $data ; } echo strip_html_tags( array ( 'p' , 'img' ), $str ); //输出:<div>这里是p标签<a href="">这里是a标签</a><br></div>; |
3:删除标签和标签的内容
使用方法:strip_html_tags($tags,$str);
$tags:需要删除的标签(数组格式)
$str:需要处理的字符串;
1
2
3
4
5
6
7
8
9
10
11
|
function strip_html_tags( $tags , $str ){ $html = array (); foreach ( $tags as $tag ) { $html []= '/<' . $tag . '.*?>[\s|\S]*?<\/' . $tag . '>/' ; $html []= '/<' . $tag . '.*?>/' ; } $data =preg_replace( $html , '' , $str ); return $data ; } echo strip_html_tags( array ( 'a' , 'img' ), $str ); //输出<div><p>这里是p标签</p><br></div> |
很多网站文章里面会带上网站名和链接;
比如<a href=”http://www.baijunyao.com”;>白俊遥博客</a>;
这个函数就是专治这种;
别拿这个函数采集本站啊;
不然保证不打死你;
4:终极函数,删除指定标签;删除或者保留标签内的内容;
使用方法:strip_html_tags($tags,$str,$content);
$tags:需要删除的标签(数组格式)
$str:需要处理的字符串;
$ontent:是否删除标签内的内容 0保留内容 1不保留内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/** * 删除指定标签 * * @param array $tags 删除的标签 数组形式 * @param string $str html字符串 * @param bool $content true保留标签的内容text * @return mixed */ function stripHtmlTags( $tags , $str , $content = true) { $html = []; // 是否保留标签内的text字符 if ( $content ){ foreach ( $tags as $tag ) { $html [] = '/(<' . $tag . '.*?>(.|\n)*?<\/' . $tag . '>)/is' ; } } else { foreach ( $tags as $tag ) { $html [] = "/(<(?:\/" . $tag . "|" . $tag . ")[^>]*>)/is" ; } } $data = preg_replace( $html , '' , $str ); return $data ; } //输出<div><p>这里是p标签</p><img src="" alt="这里是img标签"><br></div>; |
前面扯了那么多;
其实最后这个函数才是干货;
一口气搞定各种标签删除的疑难杂症不费劲;
转载请注明:XAMPP中文组官网 » 总结php删除html标签和标签内的内容方法