Welche Funktion verwenden Sie, um innerHTML eines bestimmten DOMNode in der PHP-DOM-Implementierung abzurufen? Kann jemand eine zuverlässige Lösung geben?
Natürlich reicht OuterHTML auch.
Vergleichen Sie diese aktualisierte Variante mit dem PHP Manual User Note # 89718 :
<?php
function DOMinnerHTML(DOMNode $element)
{
$innerHTML = "";
$children = $element->childNodes;
foreach ($children as $child)
{
$innerHTML .= $element->ownerDocument->saveHTML($child);
}
return $innerHTML;
}
?>
Beispiel:
<?php
$dom= new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->load($html_string);
$domTables = $dom->getElementsByTagName("table");
// Iterate over DOMNodeList (Implements Traversable)
foreach ($domTables as $table)
{
echo DOMinnerHTML($table);
}
?>
DOMDocument
. Möglicherweise möchten Sie auch dastrim
durch ein ersetzenltrim
(oder es sogar vollständig entfernen), um ein wenig Leerzeichen wie Zeilenumbrüche zu erhalten.DOMElement
anstelle von a zu erwarten,DOMNode
da ich die Rückgabe von übergeben habeDOMDocument::getElementById()
. Nur für den Fall, dass es jemand anderen auslöst.Hier ist eine Version in einem funktionalen Programmierstil :
quelle
Um das
html
eines Elements zurückzugeben, können Sie C14N () verwenden :quelle
Eine vereinfachte Version von Haim Evgis Antwort:
Anwendungsbeispiel:
Es besteht keine Notwendigkeit zu setzen
preserveWhiteSpace
oderformatOutput
.quelle
Zusätzlich zu Trincots netter Version mit
array_map
undimplode
diesmal aber mitarray_reduce
:Ich verstehe immer noch nicht, warum es keine
reduce()
Methode gibt, die Arrays und Iteratoren gleichermaßen akzeptiert.quelle
quelle
Hier ist ein weiterer Ansatz, der auf diesem Kommentar von Drupella auf php.net basiert und für mein Projekt gut funktioniert hat. Es definiert das,
innerHTML()
indem ein neuerDOMDocument
Zielknoten erstellt, importiert und an diesen angehängt wird, anstatt explizit über untergeordnete Knoten zu iterieren.InnerHTML
Definieren wir diese Hilfsfunktion:
Hier können wir das äußere Ziel-Tag über das zweite Eingabeargument ein- / ausschließen.
Anwendungsbeispiel
Hier extrahieren wir den inneren HTML-Code für ein Ziel-Tag, das durch das "erste" ID-Attribut angegeben wird:
Live-Beispiel:
http://sandbox.onlinephpfunctions.com/code/2714ea116aad9957c3c437d46134a1688e9133b8
quelle
Alte Abfrage, aber es gibt eine eingebaute Methode, um das zu tun. Übergeben Sie einfach den Zielknoten an
DomDocument->saveHtml()
.Vollständiges Beispiel:
Ausgabe:
<p>ciao questa è una <b>prova</b>.</p>
quelle