使用正则表达式从URL获取字符串?

时间:2011-06-30 10:19:44

标签: php regex preg-replace preg-match

正则表达式是我的呐喊,任何人都可以帮助我从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,替换还是拆分?

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

4 个答案:

答案 0 :(得分:6)

您可以使用parse_url函数,然后从网址路径获取最后一段:

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

答案 1 :(得分:2)

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

但正如其他人所提到的,在这种情况下,使用适当的函数解析url可能会更好。

答案 2 :(得分:1)

我认为您可以直接使用此php function (parse_url)而不是使用正则表达式。

答案 3 :(得分:0)

使用smth:

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