Czy istnieje sposób dołączania kodu źródłowego do DOMElement? Coś takiego:Jak dołączyć kod źródłowy HTML do DOMElement w PHP?
$trElement->appendSource("<a href='?select_user=4'>Username</a>");
Parsuje ten fragment, a następnie dodaje.
Czy istnieje sposób dołączania kodu źródłowego do DOMElement? Coś takiego:Jak dołączyć kod źródłowy HTML do DOMElement w PHP?
$trElement->appendSource("<a href='?select_user=4'>Username</a>");
Parsuje ten fragment, a następnie dodaje.
Szukasz
- DOMDocumentFragment::appendXML
— Append raw XML data
przykładu z podręcznika:
$doc = new DOMDocument();
$doc->loadXML("<root/>");
$f = $doc->createDocumentFragment();
$f->appendXML("<foo>text</foo><bar>text2</bar>");
$doc->documentElement->appendChild($f);
echo $doc->saveXML();
Jeśli nie mają odniesienia do document root w zakresie, zawsze można do niego dostęp za pośrednictwem ownerDocument
właściwość dowolnego węzła:
$frag = $trElement->ownerDocument->createDocumentFragment();
$frag->appendXML("<a href='?select_user=4'>Username</a>");
$trElement->appendChild($frag);
Tak, można to zrobić z DOMDocument::createDocumentFragment
:
$fragment = $dom->createDocumentFragment();
$fragment->appendXML('<a href="select_user=4">Username</a>');
$element->appendChild($fragment);
W tym przypadku byłoby prościej zrobić to z normalnym createElement
rozmowy:
$el = $dom->createElement('a', 'Username');
$el->setAttribute('href', 'select_user=4');
$element->appendChild($el);
W każdym przypadku $element
jest DOM element, do którego chcesz dołączyć swój kod.
"W takim przypadku prostsze byłoby zrobienie tego przy normalnym wywołaniu createElement:", nie jest to moim przypadkiem, ponieważ w mojej aplikacji mogę mieć dowolne wejście, więc fragment jest w porządku. – fabio
@fabio W takim razie jesteś. Upewnij się jednak, że oczyszczasz dane wejściowe ... – lonesomeday
dziękuję, działało jak czar !!!! – fabio
Uwaga: Dane wejściowe HTML muszą być poprawne, w przeciwnym razie wystąpią błędy. Sposób, w jaki to zrobiłem, to utworzenie kolejnego dokumentu, załadowanie do niego kodu HTML (jako HTML, a nie XML), a następnie ponowne zaimportowanie nowo utworzonych węzłów z powrotem do mojego oryginalnego dokumentu. –
Jeśli "wynik konwersji nie powiodła się z powodu błędu konwersji" na "DOMDocument :: saveHTML()" w wyniku dodania kodu zewnętrznego, musisz wymusić konwersję na określony standard kodowania, np. przez 'utf8_encode()'. – kenorb