[英]DOMXPath DOM parser with PHP: Skip a class
我想跳过第一个"a" <a href="URL#" title="TITLE">TITLE</a>
并选择所有其他已发布的课程
$models = $xpath->query("//p[@class='posted-in']//a");
for ($i = 0; $i < $models->length; $i++) {
$result->add_model($models->item($i)->getAttribute('a'));
}
HTML:
<p class="posted-in">
Posted in <a href="URL#" title="TITLE">TITLE</a>
on Mar 16, 2017 featuring <a href="URL#">MODEL1</a>,
<a href="URL#">MODEL2</a>,
<a href="URL#">MODEL2</a></p>
我将此代码与标签“ alt”一起使用
$models = $xpath->query("//li[@class='models']//img");
for ($i = 0; $i < $model->length; $i++) {
$result->add_model($models->item($i)->getAttribute('alt'));
}
但我很困惑...我怎么能选择a
文本?
元素节点的文本内容在属性DOMElement::$textContent
可用。 该值包括任何后代文本节点。
如果您需要忽略结果中的第一个节点,则可以添加条件。
$html = <<<'HTML'
<p class="posted-in">
Posted in <a href="URL#1" title="TITLE">TITLE</a>
on Mar 16, 2017 featuring <a href="URL#2">MODEL1</a>,
<a href="URL#3">MODEL2</a>,
<a href="URL#4">MODEL2</a></p>
HTML;
$document = new DOMDocument();
$document->loadHtml($html);
$xpath = new DOMXpath($document);
$expression = '//p[@class="posted-in"]/a[position() > 1]';
foreach ($xpath->evaluate($expression) as $a) {
var_dump($a->textContent, $a->getAttribute('href'));
}
输出:
string(6) "MODEL1"
string(5) "URL#2"
string(6) "MODEL2"
string(5) "URL#3"
string(6) "MODEL2"
string(5) "URL#4"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.