如何使用 foreach 循环获取所有内容,除了那些在简单 html dom.php 中有一些 class 的内容
How to get all the contents with foreach loop except for those having some class in simple html dom.php
假设我有这样的代码:
<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>
现在我只想显示具有 class“toshow”但不包括“notshow”的项目:
<?php
foreach($html->find('div[class="container"]') as $element)
echo $elemtnt->plaintext.'<br>';
?>
此外,我已尝试排除具有 class“notshow”的跨度:
<?php
foreach($html->find('div[class="container"] span[class! = "notshow"]') as $element)
echo $elemtnt->plaintext.'<br>';
?>
如何使用foreach循环显示所有项目?
simple_html_dom.php
如果你使用 DOMXpath,你可以这样做:
$xdoc = new DomDocument;
$xdoc->loadHTMLFile("xxxx");
$xpath = new DOMXpath($xdoc);
$xpath->query(".//*[contains(@class,'toshow')]");
或不显示
$xpath->query(".//*[not(contains(@class,'notshow'))]");
要查找带有 class“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
或显示 class 不是 notshow
的所有跨度
foreach($html->find('div[class="container"] span[class!=notshow]') as $element) {
echo $element->plaintext . PHP_EOL;
}
输出
item1
item2
item3
item4
item5
item5
假设我有这样的代码:
<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>
现在我只想显示具有 class“toshow”但不包括“notshow”的项目:
<?php
foreach($html->find('div[class="container"]') as $element)
echo $elemtnt->plaintext.'<br>';
?>
此外,我已尝试排除具有 class“notshow”的跨度:
<?php
foreach($html->find('div[class="container"] span[class! = "notshow"]') as $element)
echo $elemtnt->plaintext.'<br>';
?>
如何使用foreach循环显示所有项目? simple_html_dom.php
如果你使用 DOMXpath,你可以这样做:
$xdoc = new DomDocument;
$xdoc->loadHTMLFile("xxxx");
$xpath = new DOMXpath($xdoc);
$xpath->query(".//*[contains(@class,'toshow')]");
或不显示
$xpath->query(".//*[not(contains(@class,'notshow'))]");
要查找带有 class“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
或显示 class 不是 notshow
foreach($html->find('div[class="container"] span[class!=notshow]') as $element) {
echo $element->plaintext . PHP_EOL;
}
输出
item1
item2
item3
item4
item5
item5