preg_match html table match


preg_match html table match

这是我的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/

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