使用正则表达式从表中获取数据,表位于变量中

时间:2014-02-19 17:43:19

标签: php regex

我在php字符串中有一个html的网页,其中包括一个表格。该表有很多行,我想从中提取有关两行的信息,class.day和class.odd。他们每个人都会重复多次。

我希望将数据中的信息包含在内,例如(或者可能在关联数组中):

$array1 = array(17=>'', 18=>'', 19=>150, 20=>145, 21=>175)
$array2 = array(17=>'', 18=>'', 19=>90, 20=>75, 21=>120)
$array3 = array(...)
$array4 = array(...)

我想知道如何实现这一点,任何人都可以帮忙解决任何建议吗?

非常感谢。

<table class="matrix">
    <tr ...></tr>
    <tr ...></tr>
    <tr class="day">
        <td class="fill_row" colspan="2"></td>
        <td class="past">17</td>
        <td class="past">18</td>
        <td>19</td>
        <td>20</td>
        <td>21</td>
    </tr>
    <tr ...></tr>
    <tr ...></tr>
    <tr class="odd">
        <td class="fill_row" colspan="2"></td>
        <td class="past"> </td>
        <td class="past"> </td>
        <td>150</td>
        <td>145</td>
        <td>175</td>
    </tr>
    <tr ...></tr>
    <tr ...></tr>
    <tr class="day">
        <td class="fill_row" colspan="2"></td>
        <td class="past">17</td>
        <td class="past">18</td>
        <td>19</td>
        <td>20</td>
        <td>21</td>
    </tr>
    <tr ...></tr>
    <tr ...></tr>
    <tr class="odd">
        <td class="fill_row" colspan="2"></td>
        <td class="past"> </td>
        <td class="past"> </td>
        <td>90</td>
        <td>75</td>
        <td>120</td>
    </tr>
</table>

1 个答案:

答案 0 :(得分:1)

它不完美,但它有效^^

<?php
$strRegEx = '#<tr class="(day|odd)">.{1,10}<td .{28}>([0-9]*)</td>.{1,10}<td .{12}>(.{1,5})</td>.{1,10}<td .{12}>(.{1,5})</td>.{1,10}<td>([0-9]*)</td>.{1,10}<td>([0-9]*)</td>.{1,10}<td>([0-9]*)</td>.{1,10}</tr>#s';
$regEx = preg_match_all($strRegEx , $strYourHtml, $arrTable);

if ($regEx) {
    $arrResults = array();
    foreach($arrTable[1] as $strKey => $arrResult){
        $arrResults[$strKey]["name"] = $arrResult;
        $arrResults[$strKey]["value_1"] = $arrTable[2][$strKey];
        $arrResults[$strKey]["value_2"] = $arrTable[3][$strKey];
        $arrResults[$strKey]["value_3"] = $arrTable[4][$strKey];
        $arrResults[$strKey]["value_4"] = $arrTable[5][$strKey];
        $arrResults[$strKey]["value_5"] = $arrTable[6][$strKey];
        $arrResults[$strKey]["value_6"] = $arrTable[7][$strKey];
    }
} else {
    $arrResults = false;
}

print_r($arrResults);
?>