PHP не может получить значение из определенного элемента DOM

Я пытаюсь извлечь контент из элемента ap на этой странице. Как вы можете видеть, в исходном коде есть абзац с содержанием, которое я хочу:

<p id="qb"><!--
QBlastInfoBegin
    Status=READY
QBlastInfoEnd
--></p>

На самом деле я хочу принять значение статуса. Вот мой код PHP.

@$dom->loadHTML($ncbi->ncbi_request($params));
$XPath = new DOMXpath($dom);
$nodes = $XPath->query('//p[@id="qb"]');
$node  = $nodes->item(0)->nodeValue;
var_dump($node))

это возвращает

["nodeValue"]=> string(0) ""

Любая идея?

Спасибо!

2 ответа

Решение

Я проверил сайт, и, кажется, вы после комментария внутри, вам нужно добавить comment() на ваш запрос xpath. Рассмотрим этот пример:

$contents = file_get_contents('http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?RID=UY5PPBRH014&CMD=Get');
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($contents);
libxml_clear_errors();
$xpath = new DOMXpath($dom);

$comment = $xpath->query('//p[@id="qb"]/comment()')->item(0)->nodeValue;
echo '<pre>';
print_r($comment);

Выходы:

QBlastInfoBegin
    Status=READY
QBlastInfoEnd

Похоже, что для получения значений комментариев нужно использовать //comment()Я не слишком знаком с XPath, поэтому не уверен в точном синтаксисе

Источники: /questions/3631490/kak-ya-mogu-prochitat-pervyij-kommentarij-xml-v-php/3631496#3631496 / /questions/43702528/kak-poluchit-kommentarii-iz-xml-dokumenta-v-php/43702542#43702542

Обновление: с рабочим кодом

<?php

$data = file_get_contents('http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?RID=UY5PPBRH014&CMD=Get');
$dom = new DOMDocument();
@$dom->loadHTML($data);
$XPath = new DOMXpath($dom);
$nodes = $XPath->query('//p[@id="qb"]/comment()');
foreach ($nodes as $comment)
{
    var_dump($comment->textContent);
}
Другие вопросы по тегам