正则表达式,如何匹配这个字符串?

时间:2012-10-12 20:36:56

标签: php regex url

我有网址http://domain.com/script.php?l=7&p=146#p146。我希望能够在没有#的情况下获得p =之后的数字。此外,哈希可能并不总是存在,所以有时它可能会变成script.php?l=7&p=146。我知道它与正则表达式字符+有关,但我不完全确定如何使用它。有人可以创建正则表达式并解释它是如何工作的吗?

2 个答案:

答案 0 :(得分:5)

这里不需要正则表达式。

$query = parse_url("http://domain.com/script.php?l=7&p=146#p146", PHP_URL_QUERY);
parse_str($query, $params);
echo $params['p'];

parse_url可以为您提供网址的所有不同元素。 parse_str会获取一个查询字符串(您在?和URL中的可选#之间找到的内容),并为您找出不同的参数。您也可以省略函数的参数$params,然后parse_str将为您定义一些变量(之后您可以在$p中找到结果)。但我个人不喜欢使用parse_str这种副作用。

如果您想阅读更多内容:parse_urlparse_str上的PHP文档

答案 1 :(得分:1)

不要重新发明轮子。使用内置函数(例如parse_url)来解析URL。

文档和示例:http://php.net/manual/en/function.parse-url.php