使用php使用类名或id获取完整的'div'内容

时间:2012-08-24 13:36:26

标签: php html

我使用php从文件中获取了一个页面源,其输出类似于

<div class="basic">

 <div class="math">

  <div class="winner">

   <div class="under">

        <div class="checker">

         <strong>check</strong>

        </div>

   </div>

  </div>

 </div>

</div>

从这里我需要得到一个特殊的'div',整个div和内容如下,当我输入'under'(类名)时。任何人建议我如何使用PHP

这样做
<div class="under">

      <div class="checker">

         <strong>check</strong>

      </div>

 </div>

3 个答案:

答案 0 :(得分:14)

试试这个:

$html = <<<HTML
<div class="basic">
    <div class="math">
        <div class="winner">
            <div class="under">
                <div class="checker">
                    <strong>check</strong>
                </div>
            </div>
        </div>
    </div>
</div>;
HTML;

$dom = new DOMDocument();

$dom->loadHTML($html);

$xpath = new DOMXPath($dom);

$div = $xpath->query('//div[@class="under"]');

$div = $div->item(0);

echo $dom->saveXML($div);

这将输出:

<div class="under">
    <div class="checker">
        <strong>check</strong>
    </div>
</div>

答案 1 :(得分:6)

从任意网页中提取特定div ID内容的功能

以下函数从指定的div中提取内容并返回它。如果找不到具有ID的div,则返回false。

function getHTMLByID($id, $html) {
    $dom = new DOMDocument;
    libxml_use_internal_errors(true);
    $dom->loadHTML($html);
    $node = $dom->getElementById($id);
    if ($node) {
        return $dom->saveXML($node);
    }
    return FALSE;
}

$id是您尝试提取其内容的<div>的ID,$html是您的HTML标记。

用法示例:

$html = file_get_contents('http://www.mysql.com/');
echo getHTMLByID('tagline', $html);

输出:

The world's most popular open source database

答案 2 :(得分:-2)

我不确定你问的是什么,但这可能是它

preg_match_all("<div class='under'>(.*?)</div>", $htmlsource, $output);

$ output现在应该包含该div的内部内容