【问题标题】:PHP: Getting url variable with preg_match?PHP:使用 preg_match 获取 url 变量?
【发布时间】:2012-07-27 06:20:36
【问题描述】:
http://www.example.com?id=05

http://www.example.com?id=05&name=johnny

这是一个字符串。我想从中获取$id 的值。

它的正确模式是什么?

【问题讨论】:

  • 你有关于 id 参数的信息吗?所有数字?
  • 既然可以使用$params = parse_str(parse_url($url, PHP_URL_QUERY)),为什么还要使用preg_match?您的解决方案是否只需要使用 preg_match?这样你就可以检查$params['id'] 的值了吗?
  • 如果您确实想弄清楚如何使用正则表达式获取 ID 的值,就像练习一样,告诉我们您到目前为止尝试了什么以及您拥有什么部分会有所帮助麻烦了。

标签: php regex


【解决方案1】:

@PhpMyCoder 的解决方案非常完美。但是如果你绝对需要使用 preg_match (虽然在这种情况下完全没有必要)

$subject = "http://www.mysite.com?id=05&name=johnny";
$pattern = '/id=[0-9A-Za-z]*/'; //$pattern = '/id=[0-9]*/'; if it is only numeric.
preg_match($pattern, $subject, $matches);
print_r($matches);

【讨论】:

  • +1 用于满足我的自我:P 并回答所要求的内容
  • 问题表明id不一定是数字。
  • 编辑答案以涵盖字母数字查询。谢谢。
  • 个人会将支票交给 PhpMyCoder
【解决方案2】:

你不需要正则表达式(除非你有充分的理由,否则你不应该在未来直接跳到正则表达式)。

parse_url()PHP_URL_QUERY 一起使用,可检索查询字符串。然后将其与parse_str() 配对。

$querystring = parse_url('http://www.mysite.com?id=05&name=johnny', PHP_URL_QUERY);
parse_str($querystring, $vars);

echo $var['id'];

【讨论】:

  • 正是我的想法。刚刚刷新,看到你的答案 +1。
  • 其实我没有任何理由,只是为了学习,我想我没有提到它是错误的。
  • @user1091856 有合适的情况,但一般情况下应该先寻找内部(PHP提供)的方式,然后看看是否可以通过字符串操作来实现(可能使用explode() ),然后尝试正则表达式。
  • 同意。正则表达式几乎可以做任何事情,但它们通常以笨拙和复杂的方式来做。确保您的正则表达式不会因意外输入而中断,这几乎总是比看起来更难。
  • 谢谢你,非常好的兄弟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多