PHP Xpath Как получить внутренний текст сильного с идентификатором - PullRequest
0 голосов
/ 09 сентября 2018


У меня есть этот код, и я хочу получить текст внутри "сильного" кода.
Вывод HTML, что оттуда я хочу значение:

<strong id="sku-price">199.98</strong>

И этот код, который я сейчас использую

$link = "http://www.example.com";
$html = file_get_contents($link);
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXpath($doc);

$check = $xpath->query('//strong[@id="sku-price"]');
foreach($check as $p){
  **Then I don't know what to write here to get the value** 
}

В настоящее время это не работает, пожалуйста, нужна помощь, чтобы разобраться.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Вот две возможности. Вы можете прочитать свойство $textContent. Содержит текстовое содержимое всех узлов-потомков.

$nodes = $xpath->query('//strong[@id="sku-price"]');
foreach($nodes as $strong) {
  var_dump($strong->textContent); 
}

Или вы получаете его напрямую с помощью Xpath. DOMXpath::evaluate() поддерживает выражения Xpath, которые возвращают скалярные значения. Приведите список узлов в выражении в строку.

var_dump($xpath->evaluate('string(//strong[@id="sku-price"])');
0 голосов
/ 09 сентября 2018

$check будет DOMNodeList .Поскольку вы используете идентификатор, вы можете получить первый элемент из этого списка, который будет DOMElement , и получить значение_узла:

echo $check->item(0)->nodeValue;

Если вы хотите использовать foreach, вы можетеобновите ваш код до:

foreach($check as $p){
    echo $p->nodeValue;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...