1

我使用 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 和内部内容,如下所示。有人建议我如何使用 php 来做这个

<div class="under">

      <div class="checker">

         <strong>check</strong>

      </div>

 </div>
4

3 回答 3

16

尝试这个:

$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>
于 2012-08-24T14:24:17.277 回答
7

从任何网页的特定 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
于 2014-02-19T19:28:23.137 回答
-2

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

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

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

于 2012-08-24T13:42:36.323 回答