当有多个类时,如何在简单的html dom中使用find方法

时间:2016-01-08 14:26:19

标签: php simple-html-dom

如果我有类似这样的元素

<h1 class="first second last">
    <p>Paragraph</p>
</h1>

我想只为这三个类使用find方法。我试过这样:

$html->find('first.second.last',0)->plaintext;

但它不起作用。有没有想过在这种情况下使用find方法?

3 个答案:

答案 0 :(得分:0)

试试这段代码:

<script type="text/javascript">
  alert(document.getElementsByClassName("first second last"));
</script>

使用此代码,您可以获得dom元素。

答案 1 :(得分:0)

test.html:

<h1 class="first second last">
    <p>Paragraph</p>
</h1>

正如我在php简单的html dom解析器中所做的那样。 我找到了一个替代解决方案,不是通过使用find方法查询我的查询,但我们可以使用以下方法检查多个类:

include "simple_html_dom.php";

$html = file_get_html('test.html');
$h1 = $html->find('h1');
foreach ($h1 as $h1) {
    $h1Class = ($h1->class);
    if($h1Class == 'first second last'){
        $item['test'] = 'success';
    }else{
        $item['test'] = 'fail';
    }
    $ar[] = $item;
}
echo "<pre>";
print_r($ar);

答案 2 :(得分:-1)

getElementsByClassName()是您的解决方案。

<script type="text/javascript">
  var yourDomElement = document.getElementsByClassName("first second last"));
</script>

如果您使用的是jQuery,那么您也可以通过(.)运算符获得相同的DOM: -

<script type="text/javascript">
      var yourDomElement = (".first second last");
</script>

如果你想在不使用javascript和jQuery的情况下获取DOM,那么请使用以下代码: -

$dom_element_class = 'first second last';
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$results = $xpath->query("//*[@class='" . $dom_element_class . "']");

if ($results->length > 0) {
    echo $review = $results->item(0)->nodeValue;
}

link将非常有用。