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

常常扒別人網站文章的坑們;我是指那種批量式採集的壓根不看內容的,少不了都會用到刪除html標籤的函數;這裏介紹3種不一樣用途上的方法;php

$str='<div><p>這裏是p標籤</p><img src="" alt="這裏是img標籤"><a href="">這裏是a標籤</a><br></div>';

1:刪除所有或者保留指定html標籤
html

    php自帶的函數strip_tags便可知足要求,數組

    使用方法:strip_tags(string,allow);函數

              string:須要處理的字符串;網站

              allow:須要保留的指定標籤,能夠寫多個;
spa

   <?php
       echo strip_tags($str,'<p><a>');
       
   ?>
   //輸出:<p>這裏是p標籤</p><a href="">這裏是a標籤</a>

    次函數的優勢是簡單粗暴,可是缺點也很明顯;若是有一大堆標籤;而我只是想刪除指定的某一個;那要寫不少須要保留的標籤;        因此有了第二個方法;code

2:刪除指定的html標籤htm

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

              $tags:須要刪除的標籤(數組格式)字符串

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

  <?php
    function strip_html_tags($tags,$str){ 
        $html=array();
        foreach ($tags as $tag) {
            $html[]="/(<(?:\/".$tag."|".$tag.")[^>]*>)/i";
        }
        $data=preg_replace($html, '', $str); 
    } 
    echo strip_html_tags(array('p','img'),$str);
    
   ?>
   //輸出<div>這裏是p標籤<a href="">這裏是a標籤</a><br></div>;

3:刪除標籤和標籤的內容

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

              $tags:須要刪除的標籤(數組格式)

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

  <?php
    function strip_html_tags($tags,$str){ 
        $html=array();
        foreach ($tags as $tag) {
            $html[]='/(<'.$tag.'.*?>[\s|\S]*?<\/'.$tag.'>)/';
        }
        $data=preg_replace($html,'',$str);
    } 
    echo strip_html_tags(array('a','img'),$str);
    
   ?>
   //輸出<div><p>這裏是p標籤</p><img src="" alt="這裏是img標籤"><br></div>;

    不少網站文章裏面會帶上網站名和連接,好比<a href="http://www.baijunyao.com">白俊遙博客</a>;這個函數就是專治這種; 別拿這個函數採集本站啊;否則保證不打死你;

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

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

              $tags:須要刪除的標籤(數組格式)

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

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

  <?php
    /**
     * 刪除指定的標籤和內容
     * @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;
    }
    echo strip_html_tags(array('a'),$str,1);
   ?>
   //輸出<div><p>這裏是p標籤</p><img src="" alt="這裏是img標籤"><br></div>;


前面扯了那麼多;其實最後這個函數纔是乾貨;一口氣搞定各類標籤刪除的疑難雜症不費勁;

別看下面這張截圖了;無非帶點顏色好看,我主要是拿來湊圖當文章封面的;

QQ截圖20150425005608.jpg


本文爲白俊遙原創文章,轉載無需和我聯繫,但請註明來自白俊遙博客baijunyao.com       

相關文章
相關標籤/搜索