【问题标题】:Regex, how to match this string?正则表达式,如何匹配这个字符串?
【发布时间】:2012-10-12 20:36:56
【问题描述】:

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

【问题讨论】:

标签: php regex url


【解决方案1】:

这里不需要正则表达式。

$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 可以获得 URL 的所有不同元素。 parse_str 接受一个查询字符串(您在 URL 中的 ? 和可选的 # 之间找到的内容)并为您计算出不同的参数。您也可以在函数中省略参数$params,然后parse_str 将为您定义一些变量(之后您可以在$p 中找到结果)。但我个人不喜欢使用 parse_str 带来的副作用。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 2013-12-25
      • 1970-01-01
      相关资源
      最近更新 更多