编程语言
首页 > 编程语言> > PHP DOMDocument表,但保留内部HTML内容

PHP DOMDocument表,但保留内部HTML内容

作者:互联网

我正在尝试显示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等于DOMElementDOMNode->textContent(是DOMNode的派生);它只会给您本身及其所有后代节点的文本内容.

如果还需要HTML,则应使用DOMDocument::saveHTML( DOMNode $node = null ),如下所示:

function tdrows($elements){
  $str = "";
  foreach ($elements as $element) {
    $str .= $element->ownerDocument->saveHTML( $element );
  }

  return $str;
}

标签:html-table,domdocument,html,php
来源: https://codeday.me/bug/20191111/2018447.html