如何从html文件创建数据库?

时间:2017-01-11 22:45:38

标签: php html

我有一个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进行此选择。

3 个答案:

答案 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文件的干净且有用的数据库。