如何使用foreach循环获取所有内容,除了那些在simplehtmldom.php中具有某些类的内容

如何使用foreach循环获取所有内容,除了那些在simplehtmldom.php中具有某些类的内容,php,web-scraping,simple-html-dom,Php,Web Scraping,Simple Html Dom,假设我有这样一个代码: <div class="container"> <span class="toshow">item1</span> <span class="toshow">item2</span> <span class="toshow">item3</span>

假设我有这样一个代码:

 <div class="container">
        <span class="toshow">item1</span>
        <span class="toshow">item2</span>
        <span class="toshow">item3</span>
        <span class="show">item4</span>
        <span class="notshow">item4</span>
        <span class="notshow">item5</span>
        <span class="another">item5</span>
        <span class="another">item5</span>
    </div>

项目1
项目2
项目3
项目4
项目4
项目5
项目5
项目5
现在我只想显示类为“toshow”的项目,不包括“notshow”项目:


如果使用DOMXpath,可以执行以下操作:

    $xdoc = new DomDocument;
$xdoc->loadHTMLFile("xxxx");
$xpath = new DOMXpath($xdoc);
$xpath->query(".//*[contains(@class,'toshow')]");
还是不表演

$xpath->query(".//*[not(contains(@class,'notshow'))]");

要查找类为“toshow”的所有跨度,可以使用
div[class=“container”]span[class=“toshow”]

比如说

foreach($html->find('div[class="container"] span[class=toshow]') as $element) {
    echo $element->plaintext . PHP_EOL;
}
输出

item1
item2
item3
item1
item2
item3
item4
item5
item5
或显示类未显示的所有跨距
notshow

foreach($html->find('div[class="container"] span[class!=notshow]') as $element) {
    echo $element->plaintext . PHP_EOL;
}
输出

item1
item2
item3
item1
item2
item3
item4
item5
item5

我尝试过这个,但是
hasclass
不起作用。它显示“未知属性或方法”。@DivyanshuSah我使用了最新版本
1.9.1
你使用的是哪个版本?我不知道我刚从[。@第四只鸟下载的。我不知道为什么,但它显示
hasklass
是未知属性或方法。;)当然我不需要声誉,但我会投票给你。