2012-01-30 41 views
1

我想用DOM文檔或其他建議的方法做在wordpess如下:DOM文檔:查找格,獲取內容並沒有DIV打印

我有這樣的HTML保存在一個變量:

<div id="gallery-3232" class="gallery gallery-3232"> 
<li><a href=""><img src="" alt="" /></li> 
<li><a href=""><img src="" alt="" /></li> 
<li><a href=""><img src="" alt="" /></li> 
<li><a href=""><img src="" alt="" /></li> 
</div> 

而且我想與包含一個變量來結束:

<li><a href=""><img src="" alt="" /></li> 
<li><a href=""><img src="" alt="" /></li> 
<li><a href=""><img src="" alt="" /></li> 
<li><a href=""><img src="" alt="" /></li> 

我怎樣才能做到這一點,但沒有JavaScript的。隨着PHP的使用。

Thabnk你

回答

2
$source = '<div id="gallery-3232" class="gallery gallery-3232"> 
      <li><a href=""><img src="" alt="" /></li> 
      <li><a href=""><img src="" alt="" /></li> 
      <li><a href=""><img src="" alt="" /></li> 
      <li><a href=""><img src="" alt="" /></li> 
      </div>'; 

$list = new DOMDocument(); 
$list->loadHTML($source); 

$listItems = $list->getElementsByTagName('li'); 

$listString = ""; 

foreach ($listItems as $list) { 
    $listString .= $list->C14N(); 
} 

echo $listString; 
+0

我喜歡這個答案,很整潔。我以前沒有見過C14N功能。 – 2012-01-30 12:31:57

1

下面是使用正則表達式的快速和骯髒的方式:

$string = preg_replace('~</?div[^>]*>~', '', $string); 

注:就像我說的,這是一個快速和骯髒的方式。如果你確定你的輸入 - 使用這個。但是,如果您要篩選不確定的輸入內容,則最好將其正確解析。

+0

大它的作品!我明白你在說什麼,我想更仔細地解析它,這就是爲什麼我正在研究DOMDocument,但現在它是偉大的。 – ion 2012-01-30 00:50:35

2

我剛剛測試過這個,我認爲這是你的要求。基本上加載HTML到一個DOMDocument,得到你所需要的ID的元素,然後通過其子節點和輸出迭代:

$html = '<div id="gallery-3232" class="gallery gallery-3232"> 
<li><a href=""><img src="" alt="" /></li> 
<li><a href=""><img src="" alt="" /></li> 
<li><a href=""><img src="" alt="" /></li> 
<li><a href=""><img src="" alt="" /></li> 
</div> 
'; 

$doc = new DomDocument(); 
$doc->loadHtml($html); 
$div = $doc->getElementById('gallery-3232'); 
$output = ''; 
foreach($div->childNodes as $element) 
{ 
    $output .= $element->ownerDocument->saveHtml($element); 
} 
echo $output; 
+0

我們的答案非常相似!如果我誠實,我認爲你同樣好。 – IsisCode 2012-01-30 12:38:22