2012-06-28 45 views
0

我有一些html,我想使用preg_replace刪除內容中的特定div標籤。如何使用preg_replace來從html中刪除特定的div使用preg_replace

代碼:

<div class="time-trainer"> sjdgj</div> 

我想刪除有class="time-trainer"和刪除內容,以及股利。

的preg_replace是工作的罰款從HTML中刪除圖像標籤,但我們如何能

$rmvimgfromdata = preg_replace("/<img[^>]+\>/i", "", $data); 

上面的代碼是工作的罰款從HTML中刪除圖像踏歌做同樣用股利。

感謝

回答

1

試試這個

$html = '<div class="time-trainer">Remove</div>'; 

// Show 
echo $html; 

// Remove 
echo preg_replace('~<div([^>]*)(class\\s*=\\s*["\']time-trainer["\'])([^>]*)>(.*?)</div>~i', '', $html); 

UPDATE

使用DOM

$html = '<div class="time-trainer"> 
       <p class="fifths">asdasdas</p> 
       <p class="hundredths">asdasdas</p> 
       <p class="winner-info">asdasdas</p> 
      </div>'; 


$dom = new DOMDocument; 
$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
$pDivs = $xpath->query(".//div[@class='time-trainer']"); 

foreach ($pDivs as $div) { 
    $div->parentNode->removeChild($div); 
} 

echo preg_replace("/.*<body>(.*)<\/body>.*/s", "$1", $dom->saveHTML()); 
+0

感謝,但ITSA不工作,你可以在這裏查看網頁的源代碼http://www.computerhorse.com/admin1/fetch.php它仍然顯示HTML – user1485421

+0

該div標籤編輯我的答案 –

+0

如果我試圖使用DOM它顯示我的警告以及功能不起作用。告訴我,如果需要添加任何其他文件,以啓用DOM – user1485421

0

刪除元素(並確保結果是一個有效的XML)是不可能的與preg_replace。

請看下面的例子:

dsadsa 
<div class="time-trainer"> 
    adsadas 
    <div>dsadas</div> 
    dsa 
    <div>das</div> 
    dsadsa 
</div> 
ddsadas 

正則表達式描述語言理論正規語言(L3)和XML的是在更高級別(L1)。

要修改XML文件,您應該使用xml解析器,並使用該解析器刪除/添加/修改元素。閱讀文檔的答覆約XML manipulation

+1

不,PHP的PCRE正則表達式庫支持匹配的嵌套結構,並且可以很容易地匹配你所引用的「不可能」的例子(.NET和Perl也是如此),請不要說正則表達式是正則表達式,它們不是和不適用於很長很長一段時間,可能確實有更可靠的方法來提取DIV結構(例如XML DOM),但要說使用正則表達式實現是不可能的,這簡直是錯誤的。 – ridgerunner