我觉得我失去了一些东西。我正在使用以下代码从表中提取一些数字。尽管看起来很简单,但我似乎无法打印任何内容。我正在放置我的代码和下表的示例。请帮我找出我的错误。我希望它只打印出每个单元格中的数字。
//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>
PHP 错误报告应该给你一个提示。
我强烈建议在开发过程中将 error_reporting 设置为 E_ALL 并将 display_errors 设置为“on”。这会给您一个提示,说明为什么您没有得到任何结果:
PHP Warning: preg_match_all(): Unknown modifier 't'
因此,您应该在正则表达式内的斜杠中添加转义符,因为您将其用作分隔符。
preg_match_all('/<td align=right>(\d+?)<\/td>/', $response, $matches2);
与往常一样,我建议使用另一个分隔符,从而使正则表达式更具可读性。我一般选择“~”。这看起来像:
preg_match_all('~<td align=right>(\d+?)</td>~', $response, $matches2);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)