这是我的PHP代码,我现在有:
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
。
我们将非常感谢您的支持。
这很容易。正则表达式(preg_match)以插入符号图标开头:^
这意味着它应该在字符串的开头查找您的表达式。只需删除插入符号:
preg_match('/<table cellpadding='"4'" cellspacing='"4'" align='"center'" width='"100%'" role='"presentation'">(.*)<'/table>/',$data, $converted);
现在,它应该在HTML文件中随处可见。
一些思考的食物
对于调试,明智的做法是确保$data变量的内容是您要查找的。由于您引用的是一个外部URL,您永远不知道返回的是哪种确切的HTML结构/文件内容。此外,响应可能会在你没有意识到的情况下发生变化(例如:也许一周前cellspacing='"4'"
还存在,但现在已经不存在了。如果你真的必须这样做,那么编写期望响应不是你想要的,并抛出足够的错误的代码。
当我查看您正在阅读的HTML文件时,我在任何地方都看不到搜索词,所以我认为即使使用了更正的正则表达式,结果仍然是0。
让您的生活更轻松
一个很好的工具来检查你的正则表达式是否工作是这样的:http://regexr.com/
我经常使用它,直到我终于理解了正则表达式(现在仍然如此)。