Fungsi apa yang Anda gunakan untuk mendapatkan innerHTML dari DOMNode tertentu dalam implementasi PHP DOM? Bisakah seseorang memberikan solusi yang andal?
Tentu saja outerHTML juga bisa.
Bandingkan varian yang diperbarui ini dengan Catatan Pengguna Manual PHP # 89718 :
<?php
function DOMinnerHTML(DOMNode $element)
{
$innerHTML = "";
$children = $element->childNodes;
foreach ($children as $child)
{
$innerHTML .= $element->ownerDocument->saveHTML($child);
}
return $innerHTML;
}
?>
Contoh:
<?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
. Juga seseorang mungkin ingin menggantitrim
denganltrim
(atau bahkan menghapusnya sepenuhnya) untuk mempertahankan sedikit spasi seperti jeda baris.DOMElement
alih - alih aDOMNode
saat saya meneruskan pengembalianDOMDocument::getElementById()
. Kalau-kalau itu membuat orang lain tersandung.Berikut adalah versi dalam gaya pemrograman fungsional :
sumber
Untuk mengembalikan
html
elemen, Anda bisa menggunakan C14N () :sumber
Versi sederhana dari jawaban Haim Evgi:
Contoh penggunaan:
Tidak perlu mengatur
preserveWhiteSpace
atauformatOutput
.sumber
Selain versi trincot yang bagus dengan
array_map
danimplode
tapi kali ini denganarray_reduce
:Masih belum mengerti, mengapa tidak ada
reduce()
metode yang menerima array dan iterator sama.sumber
sumber
Berikut pendekatan lain berdasarkan komentar ini oleh Drupella di php.net, yang bekerja dengan baik untuk proyek saya. Ini mendefinisikan
innerHTML()
dengan membuat yang baruDOMDocument
, mengimpor dan menambahkan ke node target, bukannya secara eksplisit melakukan iterasi pada node turunan.InnerHTML
Mari kita definisikan fungsi pembantu ini:
di mana kita dapat menyertakan / mengecualikan tag target luar melalui argumen masukan kedua.
Contoh Penggunaan
Di sini kami mengekstrak HTML bagian dalam untuk tag target yang diberikan oleh atribut id "pertama":
Contoh langsung:
http://sandbox.onlinephpfunctions.com/code/2714ea116aad9957c3c437d46134a1688e9133b8
sumber
Kueri lama, tetapi ada metode bawaan untuk melakukannya. Cukup teruskan node target ke
DomDocument->saveHtml()
.Contoh lengkap:
Keluaran:
<p>ciao questa è una <b>prova</b>.</p>
sumber