我有一个HTML文件,其中包含许多<tr>
标记,例如
<tr>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
aaa
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
bbb
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
ccc
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
ddd
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
eee
</td>
</tr>
<tr>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
xxx
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
vvv
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
bbb
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
nnn
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
hhh
</td>
</tr>
我想用这个值建立一个数据库(aaa,bbb,ccc .....)
如何分隔此标签并选择正确的值?
我想使用php进行此选择。
答案 0 :(得分:0)
如果文件是正确的XML,则可以使用XPath迭代元素。
$content = <<<EOT
<html>
<tr>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
aaa
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
bbb
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
ccc
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
ddd
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
eee
</td>
</tr>
<tr>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
xxx
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
vvv
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
bbb
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
nnn
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
hhh
</td>
</tr>
</html>
EOT;
$xml = new SimpleXmlElement($content);
$result = $xml->xpath("//td");
$values = array();
foreach($result as $node) {
$values[] = trim((string)$node);
}
var_dump($values);
提取数据后,您可以使用mysqli_connect连接到数据库,mysqli_query运行查询以将数据插入表中。
答案 1 :(得分:0)
此代码假设您的问题中的HTML正是您要从中提取数据的HTML,因此我使用行缩进和换行来提取数据,如下所示:
$content = <<<EOT
<html>
<tr>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
aaa
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
bbb
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
ccc
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
ddd
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
eee
</td>
</tr>
<tr>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
xxx
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
vvv
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
bbb
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
nnn
</td>
<td class="parsehlisttable_alteritemstyle" style="text-align: right;">
hhh
</td>
</tr>
</html>
EOT;
$lines = explode("\n", $content);
foreach($lines as $line)
{
if( trim($line) == trim(strip_tags($line)) && $line != '' )
{
$line = trim($line);
$mydata[] = $line;
}
}
foreach($mydata as $data)
{
mysql_query("INSERT INTO .... VALUES (NULL, '" . $data . "' ) ");
}
祝你好运
答案 2 :(得分:0)
首先,我将html页面转换为xls文件,然后使用libreoffice calc将其转换为CSV文件。
然后我将CSV激活到一个mysql表。但这张桌子并不像我需要的那么好。所以我使用了一些PHP代码并读取数据库并将其重新写入新表。 现在我有一个来自HTML文件的干净且有用的数据库。