PHP正则表达式提取HTML链接

时间:2012-04-16 16:23:12

标签: php html regex hyperlink extraction

我整个上午一直在努力解决这个问题,但没有任何工作。

基本上我要做的就是拿一个网站,然后从页面中提取一个特定链接。基本上,该网站是一个论坛,在页面的最底部是一个部分,其中表示"最新成员是 MEMBERNAMEHERE )"。成员名称是指向其用户个人资料的链接。我能够从页面上获取链接但是当我设置正则表达式从页面上取下每个链接时,它似乎没有那么远。我的代码:

$url = "[The forum's url goes here.]";
$input = file_get_contents($url) or die("Could not access file: $url");
$regexp = "The newest member is <a.*href=\"(.*?)\".*?\>(.*)\<\/a\>+/)";
preg_match_all("The newest member is /\<a.*href=\"(.*?)\".*?\>(.*)\<\/a\>+/)", $input, $match, PREG_SET_ORDER);
echo($match[0][2]);

我想在文档中匹配的是

The newest member is <a href="http://forumurl.com/profile/usernumber">MEMBERNAME</a>)

我需要从上面的脚本中取出MEMBERNAME。网址几乎位于页面的最底部,所以我想知道这是否可以解释为什么它不能正常工作。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

代码将改为:

$url = "[The forum's url goes here.]";
$input = file_get_contents($url) or die("Could not access file: $url");
$regexp = "/The newest member is \<a.*href=\"(.*?)\".*?\>(.*)\<\/a\>\)/";
preg_match_all($regexp, $input, $match, PREG_SET_ORDER);
echo($match[0][2]);

这成功地回应:“MEMBERNAME”。

但是,您需要注意不要有多个相同的案例,或者如果您在多个论坛中这样做,您需要确保这是一致的。否则,您可以在正则表达式函数的开头或结尾包含更多代码。

您可以使用此Regular Expression Test Tool来帮助您,或者了解有关Regex如何运作的更多信息。