總結php刪除html標簽和標簽內的內容的方法

2017-06-19 1174 1 編輯:深圳網站建設 來源:SW

經常扒別人網站文章的坑們;

我是指那種批量式采集的壓根不看內容的;

少不了都會用到刪除html標簽的函數;

這里介紹3種不同用途上的方法;


$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:需要保留的指定標簽,可以寫多個;


echo strip_tags($str,'<p><a>');


//輸出:<p>這里是p標簽</p><a href="">這里是a標簽</a>

 

此函數的優點是簡單粗暴;

但是缺點也很明顯;

如果有一大堆標簽;

而我只是想刪除指定的某一個;

那要寫很多需要保留的標簽;

所以有了第二個方法;


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);

    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:需要處理的字符串;


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.baidu.com">百度</a>;

這個函數就是專治這種;

別拿這個函數采集本站啊;

不然保證不打死你- -

4:終極函數,刪除指定標簽;刪除或者保留標簽內的內容;

使用方法:strip_html_tags($tags,$str,$content);

$tags:需要刪除的標簽(數組格式)

$str:需要處理的字符串;

$ontent:是否刪除標簽內的內容 0保留內容 1不保留內容


/**

 * 刪除指定標簽

 *

 * @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>;

 

前面扯了那么多;

其實最后這個函數才是干貨;

一口氣搞定各種標簽刪除的疑難雜癥不費勁;


本站文章均為深正網站建設摘自權威資料,書籍,或網絡原創文章,如有版權糾紛或者違規問題,請即刻聯系我們刪除,我們歡迎您分享,引用和轉載,但謝絕直接搬磚和抄襲!感謝...
關注深正互聯
我們猜你喜歡
七星彩头尾