2011-05-03 58 views
2

DIV的是這樣的我應該如何在php中使用dom來獲取div的內容?

<div style="width:90%;margin:0 auto;color:#Black;" id="content"> 
this is text, severaltags 
</div> 

如何我應該得到div的內容,包括在PHP中使用DOM的
標籤?

+0

http://php.net/manual/en/domxpath.query.php有一些很好的例子 – 2011-05-03 07:54:56

+0

domxpath或正則表達式 – Ibu 2011-05-03 07:57:20

+0

** div的內容**或具有'id = content'的div – diEcho 2011-05-03 11:09:39

回答

4

假設您使用PHP5,您可以使用DOMDocument - 請注意,這不提供檢索元素的內部html的簡單方法。你可以沿着以下的東西:

function DOMinnerHTML($element) 
{ 
    $innerHTML = ""; 
    $children = $element->childNodes; 
    foreach ($children as $child) 
    { 
     $tmp_dom = new DOMDocument(); 
     $tmp_dom->appendChild($tmp_dom->importNode($child, true)); 
     $innerHTML.=trim($tmp_dom->saveHTML()); 
    } 
    return $innerHTML; 
} 

$dom = new DOMDocument(); 

$dom->loadHTML($html); 

$items = $dom->getElementsByTagName('div'); 
if ($items->length) 
{ 
    $innerHTML = DOMinnerHTML($items->item(0)); 
} 

echo $innerHTML; 

對於一些這個簡單的,雖然我不通常建議的話,我會使用正則表達式:

preg_match('|<div[^>]+>(.*?)</div>|is', $html, $match); 

if ($match) 
{ 
    echo 'html is: ' . $match[1][0]; 
} 
+0

不錯的辦法。在DOMinnerHTML函數中,可以使用已經爲每個DOMNode和DOMElement對象定義的ownerDocument(關聯的DOMDocument對象)屬性。即你可以放在你的foreach循環中:'$ innerHTML。= $ child-> ownerDocument-> saveXML($ child);'[source](http://www.php.net/manual/de/class.domelement .php#101243) – 2011-05-03 08:17:18

+0

不錯的katsuo!不知道所有者文件 – 2011-05-03 08:20:20

+0

是啊!它非常方便!這就是爲什麼我想在這裏提到它。 – 2011-05-03 08:22:28

0

如果我沒看錯你想要這個

echo "< div style='width:90%;margin:0 auto;color:#000000;font-size:14px;line-height:24px;' 
id='content'>"; 

echo "this is text, several `<br/>` tags"; 

echo "< /div>"; 

只是不介意在雙引號(「)內使用雙引號(」)。在雙引號內使用單引號(')。

+1

我知道這是舊的,但這是一些壞蛋DOM代碼在這裏.... – DadaB 2012-12-13 18:17:23

1

是這樣的嗎?

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

$element = $document->getElementById('content'); 
1

要得到的值,你可以嘗試這樣的事情

$doc = new DOMDocument(); 
$doc->loadHTMLFile('link-t0-html-file.php'); 
$xpath = new DOMXPath($doc); 
$element = $xpath->query("//*[@id='content']")->item(0); 
echo $element->nodeValue; 
相關問題