2011-06-30 78 views
2

正则表达式是我的bete noire,任何人都可以帮助我从URL中分离字符串?使用正则表达式从URL获取字符串?

我想从可能出现在任何的从输入形式通过以下方式获取URL网页名称:

https://www.facebook.com/PAGENAME?sk=wall&filter=2 
http://www.facebook.com/PAGENAME?sk=wall&filter=2 
www.facebook.com/PAGENAME 
facebook.com/PAGENAME?sk=wall 

...等等。

我似乎无法找到一种方法来隔离.com/之后但在?(如果有的话)之前的字符串。它是preg_match,替换还是拆分?

如果任何人可以推荐一个特别清晰和介绍性的正则表达式指南,他们发现有用的,这将不胜感激。

回答

6

可以使用parse_url功能,然后从URL路径得到的最后一段:

$parts=parse_url($url); 
$path_parts=explode("/", $parts["path"]); 
$page=$path_parts[count($path_parts)-1]; 
+0

典型。直到你需要一小时之前,你才知道PHP函数是存在的。 –

+0

如下所示,使用内置参数会更好。 – RReverser

+1

@RReverser只有当路径是“/ pagename”时,你的解决方案才有效,但如果它是“/ path/to/pagename”,它将返回错误的结果 – mck89

2

对于学习和测试正则表达式,我发现RegExr,一个在线工具,非常有用:http://gskinner.com/RegExr/

但正如其他人所说,解析具有相应功能的网址可能是在这种情况下更好。

+0

本来是一个很棒的评论。 – kapa

+1

有趣,赞赏。 –

0

使用不便,如:

substr(parse_url('https://www.facebook.com/PAGENAME?sk=wall&filter=2', PHP_URL_PATH), 1); 
相关问题