【问题标题】:How should I get a div's content like this using dom in php?我应该如何在 php 中使用 dom 获取这样的 div 内容?
【发布时间】:2011-05-03 11:02:59
【问题描述】:

div是这样的

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

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

【问题讨论】:

标签: php dom


【解决方案1】:

假设您使用 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];
}

【讨论】:

  • 不错的方法。在您的 DOMinnerHTML 函数中,您可以使用已经为每个 DOMNode 和 DOMElement 对象定义的 ownerDocument(related DOMDocument Object) 属性。即你可以把你的 foreach 循环:$innerHTML .= $child-&gt;ownerDocument-&gt;saveXML( $child );source
  • 不错的胜男!不知道 ownerDocument
  • 是的!这很方便!这就是我想在这里提及它的原因。
【解决方案2】:

这样的?

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

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

【讨论】:

    【解决方案3】:

    要获取值,您可以尝试这样的方法

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

    【讨论】:

      【解决方案4】:

      如果我没记错你想要这个

      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>"; 
      

      请注意不要在双引号 (") 中使用双引号 (")。在双引号内使用单引号(')。

      【讨论】:

        猜你喜欢
        • 2016-04-05
        • 2012-12-24
        • 2018-05-11
        • 1970-01-01
        • 2021-05-11
        • 1970-01-01
        • 2020-04-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多