Есть ли другой способ, кроме -> ownerDocument-> saveXML (), чтобы получить узел HTML с тегами - PullRequest
0 голосов
/ 06 июня 2018

Как мы знаем, чтобы получить html-узел с его внутренними тегами, мы должны использовать

$node->ownerDocument->saveXML($node);

вместо

$node->nodeValue;

, поскольку последний метод удаляет все внутренние теги

Но что, если я получу такой узел, как

$dom->getElementsByTagName('tr')[2]->getElementsByTagName('td')[5]

Как я могу получить его html с его внутренними тегами без написания строк, таких как

$dom->getElementsByTagName('tr')[2]->getElementsByTagName('td')[5]->ownerDocument->saveXML($dom->getElementsByTagName('tr')[2]->getElementsByTagName('td')[5])

Есть ли другой более короткий путь?

1 Ответ

0 голосов
/ 07 июня 2018

Вы не совсем поняли, что такое DOMNode::ownerDocument.Это свойство не возвращает ничего, кроме экземпляра DOMDocument, к которому принадлежит экземпляр DOMNode ($dom в вашем коде).

Таким образом, вы можете заменить вашу длинную строку на:

$cell = $dom->getElementsByTagName('tr')[2]->getElementsByTagName('td')[5];
echo $dom->saveXML($cell);

Обратите внимание, что вы также можете сократить свой код с помощью DOMXPath.

$xp = new DOMXPath($dom);
echo $dom->saveXML($xp->query('//tr[3]/td[6]')->item(0));
...