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