我在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>
答案 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);
?>