简体   繁体   中英

PHP Array to MYSQL database?

I have an table that looks like this:

<table class="tableclass">
    <tr>
        <th></th>
        <th> Totals/Avg </th>
        <th><a href='https://url/id=10607' > Column 1 </a></th>
        <th><a href='https://url/id=11658' > Column 2 </a></th>
        <th><a href='https://url/id=12562' > Column 3 </a></th>
        <th><a href='https://url/id=13278' > Column 4 </a></th>
        <th><a href='https://url/id=14696' > Column 5 </a></th>
        <th><a href='https://url/id=16255' > Column 6 </a></th>
    </tr>
    <tr>
        <td><b> Row Info 1 </b></td>
        <td> 5,400.00 </td>
        <td> 900.00 </td>
        <td> 900.00 </td>
        <td> 900.00 </td>
        <td> 900.00 </td>
        <td> 900.00 </td>
        <td> 900.00 </td>
    </tr>
    <tr>
        <td><b> Row Info 2 </b></td>
        <td> 6,000.00 </td>
        <td> 1,000.00 </td>
        <td> 1,000.00 </td>
        <td> 1,000.00 </td>
        <td> 1,000.00 </td>
        <td> 1,000.00 </td>
        <td> 1,000.00 </td>
    </tr>
    <tr>
        <td><b> Row Info 3 </b></td>
        <td> 535,547 </td>
        <td> 91,186 </td>
        <td> 90,148 </td>
        <td> 89,694 </td>
        <td> 90,900 </td>
        <td> 90,662 </td>
        <td> 82,957 </td>
    </tr>
</table>

Using the information I found here: How to parse this table and extract data from it?

I was able to get the data into arrays:

Array
(
    [0] => 
    [1] => Array
        (
            [] => Row Info 1
            [Totals/Avg] => 5,400.00
            [Column 1] => 900.00
            [Column 2] => 900.00
            [Column 3] => 900.00
            [Column 4] => 900.00
            [Column 5] => 900.00
            [Column 6] => 900.00
        )

    [2] => Array
        (
            [] => Row Info 2
            [Totals/Avg] => 6,000.00
            [Column 1] => 1,000.00
            [Column 2] => 1,000.00
            [Column 3] => 1,000.00
            [Column 4] => 1,000.00
            [Column 5] => 1,000.00
            [Column 6] => 1,000.00
        )

    [3] => Array
        (
            [] => Row Info 3
            [Totals/Avg] => 535,547
            [Column 1] => 91,186
            [Column 2] => 90,148
            [Column 3] => 89,694
            [Column 4] => 90,900
            [Column 5] => 90,662
            [Column 6] => 82,957
        )

)

What I need to do, is store the data into mysql, laid out like with the actual data in place of the Row Info:

Column 1 - Row Info 1 - Row Info 2 - Row Info 3

I've been banging my head on this all night soo here Iam.

Edit: What I need to do is basically arrange the array so I can store it as such

Array
(
    [0] => 
    [1] => Array
        (
            [] => Column 1
            [Row Info 1] => data
            [Row Info 2] => data
            [Row Info 3] => data
        )

    [2] => Array
        (
            [] => Column 2
            [Row Info 1] => data
            [Row Info 2] => data
            [Row Info 3] => data
        )

    [3] => Array
        (
            [] => Column 3
            [Row Info 1] => data
            [Row Info 2] => data
            [Row Info 3] => data
        )
        ...etc

)

You can use regex like this:

simply store your HTML tags in PHP variable as:

    $details = '<table class="tableclass"> <tr> <th> </th> <th> Totals/Avg </th> <th> <a href='https://url/id=10607' > Column 1 </a> </th> <th> <a href='https://url/id=11658' > Column 2 </a> </th> <th> <a href='https://url/id=12562' > Column 3 </a> </th> <th> <a href='https://url/id=13278' > Column 4 </a> </th> <th> <a href='https://url/id=14696' > Column 5 </a> </th> <th> <a href='https://url/id=16255' > Column 6 </a> </th> </tr><tr> <td> <b> Row Info 1 </b> </td><td> 5,400.00 </td><td> 900.00 </td><td> 900.00 </td><td> 900.00 </td><td> 900.00 </td><td> 900.00 </td><td> 900.00 </td></tr><tr> <td> <b> Row Info 2 </b> </td><td> 6,000.00 </td><td> 1,000.00 </td><td> 1,000.00 </td><td> 1,000.00 </td><td> 1,000.00 </td><td> 1,000.00 </td><td> 1,000.00 </td></tr><tr> <td> <b> Row Info 3 </b> </td><td> 535,547 </td><td> 91,186 </td><td> 90,148 </td><td> 89,694 </td><td> 90,900 </td><td> 90,662 </td><td> 82,957 </td></tr>';

after that use preg_match_all() as:

preg_match_all('/info.*?<td>(.*?)<\/td><td>(.*?)<\/td><td>(.*?)<\/td><td>(.*?)<\/td><td>(.*?)<\/td><td>(.*?)<\/td><td>(.*?)<\/td>.*?<\/tr>/is',$details,$matches);

In result you will found array which contain your row info 1,2 & 3 value respectively.

you can check your result by using

print_r($matches);

now you can store your value into database.

Thanks.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM