【问题标题】:Trying to get value of url parameter with a regular expression尝试使用正则表达式获取 url 参数的值
【发布时间】:2017-05-14 06:32:24
【问题描述】:

我试图使用正则表达式来获取以下 url 的 code 参数的值:

"http:\/\/instagram.com\/?code=wz6kmXaZbrDCHU8OdOW0PrshbZF60Zz8Aji4ivaG"

不幸的是,它没有成功,所以我最终做了以下事情:

$jsonRedirectUriWithAuthCode = "http:\/\/instagram.com\/?code=wz6kmXaZbrDCHU8OdOW0PrshbZF60Zz8Aji4ivaG";

print "jsonRedirectUriWithAuthCode= " . $jsonRedirectUriWithAuthCode;
print "\n";
$query = parse_url($jsonRedirectUriWithAuthCode, PHP_URL_QUERY);
print "query= " . $query;
print "\n";
parse_str($query, $params);
print "params['code']= ". $params['code'];
die() ;

哪些输出:

jsonRedirectUriWithAuthCode= "http:\/\/instagram.com\/?code=wz6kmXaZbrDCHU8OdOW0PrshbZF60Zz8Aji4ivaG"
query= code=wz6kmXaZbrDCHU8OdOW0PrshbZF60Zz8Aji4ivaG"
params['code']= wz6kmXaZbrDCHU8OdOW0PrshbZF60Zz8Aji4ivaG"

上面做了我想做的事。但是我仍然很好奇如果使用正则表达式会如何做到这一点。有人可以 也许告诉我如何使用正则表达式提取代码参数的值?

【问题讨论】:

  • 使用parse_urlparse_str 是可行的方法,这里没有理由使用正则表达式(除非你想引入错误)
  • 有什么实际用途,或者只是好奇?
  • @AlexBlex 好奇 :)
  • [&?]code=\K[[:alnum:]]+ 可以完成这项工作,但是当 url 包含例如这样的密码时,它可能会失败:http://username:"&code=toto"@domain.com/path/file.php?code=abcd1234 parse_url 避免了此类问题) .
  • 对于任意值会非常棘手,但有一些假设(例如代码值始终是 base64 编码)可能相当简单。

标签: php regex url-parameters


【解决方案1】:

使用parse_urlparse_str。 为了满足你的好奇心,你可以使用类似的东西:

preg_match_all('/code=(.*?)$/', $theUrl, $match); 
echo $match[1][0];

【讨论】:

    猜你喜欢
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2018-11-28
    • 2023-03-25
    • 2017-02-15
    相关资源
    最近更新 更多