使用simple_html_dom.php并提取行和列但丢失标签,如<sup> </sup>&amp; <子> </子>

时间:2013-01-21 03:16:03

标签: 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</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

它工作正常,但删除/删除/删除像<sub>1</sub>这样的标签 简而言之<sub>1</sub>被1替换为

我不想丢失标签<sub>1</sub>

解决此问题的其他方法 在<tr> & </tr>之间提取所有内容 在数组中,以便我可以将每一行存储在数组中 有这个我会(

$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;

但标签T<sup>e</sup>x<sub>t</sub>已删除,我获得纯文本

1 个答案:

答案 0 :(得分:0)

以下删除不需要的标记

$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);

<table>&amp;已移除</table>个标签(最重要) preg_split可以分隔数组中的行

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