Думаю, это должно быть относительно просто, но у меня, похоже, возникают проблемы с поиском правильного синтаксиса.
Вот то, с чем я работаю: minified
<code>$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->LoadHTML('<div class="intro"><div class="special"><span class="point"><span class="us">US </span><span>20.00</span></span> per <p class="original"><span class="us">US</span> 7.50 <a href="test.html">Link</a></p></div></div>');
$xp = new DOMXPath($dom);
$path = $xp->query('//div[@class="intro"]');
foreach($path as $p)
{
echo '<pre>';
print_r($p);
echo '
';}
Это возвращает
[nodeValue] => US 20.00 per US 7.50 Link
Что я пытаюсь сделать, это исключить любые элементы ссылок a
или href
в запросе, чтобы nodeValue просто возвращала
[nodeValue] => US 20.00 per US 7.50
Вот несколько примеров того, как я пытался добиться этого в своем запросе xpath:
$path = $xp->query('//div[@class="intro" and not(@href)]');
$path = $xp->query('//div[@class="intro" and not(a)]');
$path = $xp->query('//div[@class="intro"][not(a)]');
$path = $xp->query('//div[@class="intro"][not(@href)]');
$path = $xp->query('//div[@class="intro"][not(self::a)]');
Ничего из этого не помогло.
Что нужно для моего запроса, чтобы исключить какие-либо элементы ссылки в результате?