【发布时间】:2014-06-19 16:55:20
【问题描述】:
我觉得我错过了什么。我正在使用以下代码从表中提取一些数字。尽管看起来很简单,但我似乎无法打印任何东西。我正在放置我的代码和下表的示例。请帮我找出我的错误。我希望它只打印每个单元格中的数字。
//gets the site
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://site.org');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
//parse the data
preg_match_all('/<td align=right>(\d+?)</td>/', $response, $matches2);
//prints the parsed data
print_r($matches2[0]);
这是表格的示例。
<center><table border=1><tr><th align=left>Address</th><th width=50>0</th><th width=50>1</th><th width=50>2</th><th width=50>3</th><th width=50>4</th><th width=50>5</th><th width=50>6</th><th width=50>7</th><th width=50>8</th><th width=50>9</th></tr><tr><td>N7:0</td>
<td align=right>1</td>
<td align=right>1</td>
<td align=right>1</td>
<td align=right>99</td>
<td align=right>0</td>
<td align=right>0</td>
<td align=right>0</td>
<td align=right>0</td>
<td align=right>0</td>
<td align=right>0</td>
</tr><tr><td>N7:10</td>
<td align=right>0</td>
<td align=right>7300</td>
<td align=right>16400</td>
<td align=right>3300</td>
<td align=right>2200</td>
<td align=right>6100</td>
<td align=right>28000</td>
<td align=right>18000</td>
<td align=right>0</td>
<td align=right>0</td>
</tr></table></center><hr width=25% align=center>
【问题讨论】:
-
我强烈建议使用
DOMDocument或类似的基于 DOM 的操作来获取表数据而不是正则表达式。你的生活会轻松很多。
标签: php curl preg-match-all