innerHTML в xPath? - PullRequest
       1

innerHTML в xPath?

3 голосов
/ 01 сентября 2010

Есть ли способ получить HTML (и JavaScript), содержащийся в элементе div?

Ответы [ 4 ]

2 голосов
/ 01 сентября 2010

Я не разработчик PHP, но я нашел это:

function getNodeInnerHTML(DOMNode $oNode)
{
    $oDom = new DOMDocument();
    foreach($oNode->childNode as $oChild)
    {
        $oDom->appendChild($oDom->importNode($oChild, true));
    }
    return $oDom->saveHTML();
}

от http://www.sitepoint.com/forums/showthread.php?p=4225203

Не думаю, что вы можете выбирать контент, в том числе только с XPath, поэтому может потребоваться такая функция, как приведенная выше. И затем вы выбираете ваш div как //div[@id='someID'] и т. Д.

0 голосов
/ 10 апреля 2015
$xml=new DOMDOCUMENT();
@$xml->loadHTML($htmlcontents);
$xpath=new DOMXPATH($xml);
$nodes=$xpath->query($xpath);

function getHtml($nodes) {
    $result = '';
    foreach ($nodes as $node) {
        $result .= $node->ownerDocument->saveHtml($node);
    }
return $result;
}

Источник: как получить innerhtml по имени класса или идентификатору, используя php

0 голосов
/ 14 апреля 2013

Это даст вам externalHTML, а не innerHTML, но вы можете легко удалить лишние теги DIV с обоих концов.

Рабочий пример:

$xpath = new DOMXPath( @DOMDocument::loadHTML($the_html_code) ) ;
$domElement = $xpath->evaluate("//div[@id='ID_of_the_div']")->item(0) ;
$outerHTML = $domElement->ownerDocument->saveXML($domElement) ;
0 голосов
/ 01 сентября 2010

Теперь о:

// div [@ id = 'your div']

Если вас не волнует производительность?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...