DomXPath Выбор - PullRequest
       12

DomXPath Выбор

1 голос
/ 06 ноября 2011

У меня проблема с DomXPath для выбора того, что мне нужно. У меня есть структура, как

<div id="a">
  Something
    <nobr> Inside </nobr>
</div>

То, что я хочу, это выбрать только «Нечто», а не «Внутри». Я знаю, как выбрать только «Внутри» или их обоих одновременно, например, //div[@id='a'], а затем позвонить $obj->nodeValue, но я не смог найти способ выбрать только «Что-то». Может ли кто-нибудь помочь мне об этом? Спасибо.

Редактировать: Если что-то изменилось на что-то 123456, можете ли вы также дать мне подсказку, как выбрать в качестве бонуса только числовые значения как 123456?

1 Ответ

1 голос
/ 06 ноября 2011

Найти номер внутри текстового узла в xpath довольно тяжело. Вместо этого вы можете использовать регулярное выражение в PHP для синтаксического анализа текста текстового узла для получения значения:

$doc = new DomDocument;
$doc->loadXML($xml);
$xpath = new DOMXPath($doc);
$text = $xpath->query("/div[@id='a']/child::text()")->item(0)->nodeValue;
$r = preg_match('~\d+~', $text, $matches);
list($number) = $matches;

Демо

...