3
Как создать DOMNode
из строки фрагмента HTML, если, конечно, строка содержит один корневой узел?Создайте DOMNode из строки фрагмента HTML
Как создать DOMNode
из строки фрагмента HTML, если, конечно, строка содержит один корневой узел?Создайте DOMNode из строки фрагмента HTML
DOMDocumentFragments действительно есть() метод с loadXML
libxml_use_internal_errors(1);
$opts = array('http' => array('header' => 'Accept-Charset: ISO-8859-1, *;q=0'));
$context = stream_context_create($opts);
$html = file_get_contents('http://multiple.webcindario.com/wstest.php' , false , $context);
$html = html_entity_decode(htmlentities($html, ENT_QUOTES, 'UTF-8'), ENT_QUOTES , 'ISO-8859-1');
ob_clean();
$classname = "product";
$domdocument = new DOMDocument();
$domdocument->preserveWhiteSpace = true;
$domdocument->formatOutput = false;
$domdocument->loadHTML($html);
$xpath = new DOMXPath($domdocument);
$found = $xpath->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
$newHTML="<div class='foo bar'><p>This is <b>an <i>example</i></b> paragraph <a href='#!'>#!</a></p></div>";
$newHTML = html_entity_decode(htmlentities($newHTML, ENT_QUOTES, 'UTF-8'), ENT_QUOTES , 'ISO-8859-1');
foreach($found as $oldnode){
$frag = $domdocument->createDocumentFragment();
$frag->appendXML($newHTML);
$oldnode->appendChild($frag);
$updatedHTML=$domdocument->saveHTML();
}
например: http://multiple.webcindario.com/addNodefromHTML.php
(это добавляет пример пункт как chilNode к выбранным узлам источника)
http://www.php.net/manual/en/domdocument.createdocumentfragment.php –
@MarcB Это не позволяет создавать узел из разметки, хотя, do это так? –
нет. но как только вы получите фрагмент, вы можете AppendChild вставить его в dom. –