如何使用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
是未知属性或方法。;)当然我不需要声誉,但我会投票给你。