[英]PHP DOMDocument table but leave inner HTML content
我正在嘗試在HTML表格中顯示每一行,並在結果中保留內部HTML標記,但我無法使其工作,並且它不斷剝離HTML內部標記對我來說最好從每個行獲取一行HTML表格並在結果中保留內部HTML標記?
這是我正在使用的代碼,以使其工作:
<?php
function tdrows($elements){
$str = "";
foreach ($elements as $element) {
$str .= $element->nodeValue . ", ";
}
return $str;
}
function getdata(){
$content = "<table border="0" cellspacing="0" cellpadding="0" class="ta1"><colgroup><col width="99"/><col width="99"/><col width="99"/><col width="99"/></colgroup><tr class="ro1"><td style="text-align:left;width:2.267cm; " class="ce1"><p>Col A</p></td><td style="text-align:left;width:2.267cm; " class="ce2"><p>Col B</p></td><td style="text-align:left;width:2.267cm; " class="ce3"><p>Col C</p></td><td style="text-align:left;width:2.267cm; " class="ce5"><p>Col D</p></td></tr><tr class="ro2"><td style="text-align:left;width:2.267cm; " class="Default"><p>This <span class="T1">is</span> a test</p></td><td style="text-align:left;width:2.267cm; " class="Default"><p>This is a <span class="T2">test</span></p></td><td style="text-align:left;width:2.267cm; " class="ce4"><p>This<span class="T3"> is</span> a test<span class="T4">2</span></p></td><td style="text-align:left;width:2.267cm; " class="Default"><p>This is a test</p></td></tr></table>";
$DOM = new DOMDocument;
$DOM->loadHTML($contents);
$items = $DOM->getElementsByTagName('tr');
foreach ($items as $node) {
echo tdrows($node->childNodes) . "<br />";
}
}
getdata();
它目前顯示在下面是正確的,但它缺少內部HTML標記。
Col A, Col B, Col C, Col D,
This is a test, This is a test, This is a test2, This is a test,
也許我看錯了,我應該有另一種方法從表中提取信息以獲得正確的結果。 任何幫助將不勝感激。
DOMNode->nodeValue
等同於DOMElement
DOMNode->textContent
(它是DOMNode
的衍生物); 它只會給你自己及其所有后代節點的文本內容。
如果你也想要HTML,你應該使用DOMDocument::saveHTML( DOMNode $node = null )
,如下所示:
function tdrows($elements){
$str = "";
foreach ($elements as $element) {
$str .= $element->ownerDocument->saveHTML( $element );
}
return $str;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.