2015-06-13 10 views
1

У меня есть следующий простой HTML:Пустой XPath результат, когда он не должен быть

<span class="myClass"> 
    <strong>Number</strong> 
    : 9 
</span> 

Я просто хочу, чтобы разобрать для возврата: : 9

Я пытаюсь следующий XPath, который я» м вполне уверен, это правильно, но я не получаю какой-либо текст вернулся:

$dom = new DOMDocument(); 
$dom->loadHtml($htmlAsAbove); 
$xpath = new DOMXpath($dom); 
$result = $xpath->query("normalize-space(//span/text()[last()])"); 

if($result->length > 0) { 
    echo 'here it is '.$result->item(0); 
} else { 
    echo 'nothing'; // this returns every time 
} 

ответ

1

Ничего плохого с XPath, только DOMXPath::query() не смог вернуться, кроме набора узлов. Для выполнения выражения XPath, которая не возвращает набор узлов *, используйте DOMXPath::evaluate() вместо:

$result = $xpath->evaluate("normalize-space(//span/text()[last()])"); 
echo 'here it is '.$result; 

*: normalize-space() XPath функция возвращает string

eval.in Demo

выход:

here it is : 9 
+0

Aaaahhhhh - теперь знал, что - высоко ценится –

Смежные вопросы