我应该如何在php中使用dom获取这样的div内容?

时间:2011-05-03 11:02:59

标签: php dom

div就像这样

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

我应该如何获得div的内容,包括在php中使用dom的标签?

4 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:1)

这样的东西?

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

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

答案 2 :(得分: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;

答案 3 :(得分: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>"; 

请记住,它绝不会在双引号(“)中使用双引号(”)。在双引号中使用单引号(')。