preg_match html表匹配

时间:2016-04-02 11:55:17

标签: php html preg-match

这是我的PHP代码,我目前正在:

name

我想获取function getStatus($file, $dob){ $url = "http://www.passportindia.gov.in/AppOnlineProject/statusTracker/trackStatusForFileNoNew?fileNo=$file&applDob=$dob"; $data = file_get_contents($url); echo preg_match('/^<table cellpadding=\"4\" cellspacing=\"4\" align=\"center\" width=\"100%\" role=\"presentation\">(.*)<\/table>/',$data, $converted); //$converted = preg_replace("/[^0-9.]/", "", $converted[1]); //return round($converted, 3); } <table cellpadding="4" cellspacing="4" align="center" width="100%" role="presentation">

之间的所有内容

目前</table>会返回preg_match

我们非常感谢您的支持。

1 个答案:

答案 0 :(得分:0)

这很容易。您的正则表达式(preg_match)以插入符号图标开头:^

这意味着它应该在字符串的开头查找表达式。只需删除插入符号:

preg_match('/<table cellpadding=\"4\" cellspacing=\"4\" align=\"center\" width=\"100%\" role=\"presentation\">(.*)<\/table>/',$data, $converted);

现在它应该在HTML文件中随处可见。

有些值得深思的话

对于调试,确保$ data变量的内容是您正在寻找的内容是明智的。由于您指的是外部URL,因此您永远不会知道您获得的确切HTML结构/文件内容。响应可能会在您没有意识到的情况下发生变化(例如:可能在1周之前cellspacing=\"4\"存在但现在不再存在。如果您真的必须这样做,请编写期望响应的代码不是你想要的,并抛出足够的错误。

当我查看您正在阅读的HTML文件时,我没有在任何地方看到搜索词,所以我认为即使使用更正的正则表达式,您仍然会得到0作为结果。

让您的生活更轻松

检查你的正则表达式是否有效的一个很好的工具就是这个:http://regexr.com/

我经常使用它,直到我终于理解正则表达式(并且仍然如此)。