这是我的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
。
我们非常感谢您的支持。
答案 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/
我经常使用它,直到我终于理解正则表达式(并且仍然如此)。