使用simple_html_dom.php并提取行和列,但会丢失标签,如&

使用simple_html_dom.php并提取行和列,但会丢失标签,如&,php,dom,Php,Dom,桌子 <table> <tr> <td>text <sub>1</sub></td> <td>text 2</td> <td>text <sup>3</sup></td> </tr> <tr> <td>text <sub>11</sub></td> <td>text 12

桌子

<table>
<tr>
<td>text <sub>1</sub></td>
<td>text 2</td>
<td>text <sup>3</sup></td>
</tr>
<tr>
<td>text <sub>11</sub></td>
<td>text 12</td>
<td>text <sup>13</sup></td>
</tr>
<tr>
<td>text <sub>1</sub></td>
<td>text 2</td>
<td>text <sup>3</sup></td>
</tr>
<tr>
<td>text 12</td>
<td>text 22</td>
<td>text 32</td>
</tr>
</table>
我想提取所有tr和td'并将所有td'存储在数据库表行中

我试过了 simple_html_dom.php

它可以很好地工作,但可以删除/删除/消除像1这样的标记 简而言之,1被1代替

我不想丢失标签1

解决这个问题的其他方法 提取& 在数组中,这样我就可以将每一行存储在一个数组中 有了这个我就有了

$tr[0]="     
    <td>text <sub>1</sub></td>
    <td>text 2</td>
    <td>text <sup>3</sup></td>
     ";

$tr[1]="     
    <td>text <sub>11</sub></td>
    <td>text 12</td>
    <td>text <sup>13</sup></td>
     ";

$tr[2]="     
<td>text 12</td>
<td>text 22</td>
<td>text 32</td>
     ";
然后提取所有值并存储在数据库中

我希望解决方案按照上面指定的方式在数组中分隔行 或 在simple_html_dom.php中进行更改以解决此问题

任何其他解决方案

我甚至试过

$html = '<td class="header subject">T<sup>e</sup>x<sub>t</sub></td>';
//echo "<br>".$html;
$dom = new DOMDocument();
$dom->loadHTML( $html );

// Text
echo "<br>".$dom->getElementsByTagName("td")->item(0)->textContent;

但是标签文本被删除了,我得到了纯文本,下面删除了不需要的标签

$str1 = preg_replace('/width.*?>/', '> ', $str1);
 $str1 = preg_replace('/<td style=.*?>/', '<td~> ', $str1);
 $str1 = preg_replace('/<col >/',  " ", $str1);
 $str1 = preg_replace('/<div.*?>/',  " ", $str1);
 $str1 = preg_replace('/<\/div>/',  " ", $str1);
 $str1 = preg_replace('/<span.*?an>/',  " ", $str1);
 $str1 = preg_replace('/<tr >/',  "<tr>", $str1);
 $str1 = preg_replace('/<table.*?>/',  "", $str1);
 $str1 = preg_replace('/<\/table>/',  "", $str1);
因为&标记被删除是最重要的 preg_split可以分隔数组中的行

$trr= preg_split('/<tr>/',  $str1); 
 echo count($trr); 
 print_r($trr); 

你的例子太复杂了。试着把问题提炼成更容易让新手理解的东西;echo Htmlenties$trstr;删除但无法存储输出,即数组中的每一行