У меня есть несколько таких абзацев HTML (всегда одинаковая структура):
<p>
<!-- Gl. 1-4 -->
\( x(t) = x_0 · t^3 \)
[!equanchor? &id=`555`!]
</p>
Я извлекаю 555
успешно:
$xpath = new DomXPath($dom);
$paragraphs = $xpath->query('//p');
foreach($paragraphs as $p)
{
$ptext = $p->nodeValue;
if(strpos($ptext, 'equanchor') !== false)
{
// get equation id from anchor
preg_match('/equanchor\?\s\&id=`(.*)\`/', $ptext, $matches);
$equationids[] = (int)$matches[1];
}
}
Теперь мне также понадобится текст из HTML комментарий, который <!-- Gl. 1-4 -->
, но я не смог выяснить, как использовать для этого DOM-парсер (DomXPath). К сожалению, $p->nodeValue
ни $p->textContent
содержат текст комментария.
Этот ответ не помог мне. Я попытался «sub parser», но он не смог прочитать $ptext
или же $p
,
Вы можете использовать comment()
Функция XPath (от Доступ к комментариям в XML с использованием XPath).
Так что в вашем случае, когда вы хотите получить комментарий в <p>
тег, вы можете просто добавить строку …
echo $dom->saveHTML($xpath->query("comment()", $p)[0]);
в вашем foreach
цикл (выбирает узел комментария внутри $p
элемент в вашей петле). С помощью [0]
чтобы получить первый (при условии, только один).
Какие выводы …
<!-- Gl. 1-4 -->
Других решений пока нет …