url累积参数中的PHP参数
假设我有一个urlurl累积参数中的PHP参数,php,url,url-parameters,Php,Url,Url Parameters,假设我有一个url http://www.somepage.com/clicker.php?id_campaign=8&id_email=9324&url=https://www.google.com/search?q=dog&sxsrf=ALeKk019eteEpAwVf2Fk4qYo7TiwhuMQ_Q:1596666153666&source=lnms&tbm=isch&sa=X&ved=2ah
http://www.somepage.com/clicker.php?id_campaign=8&id_email=9324&url=https://www.google.com/search?q=dog&sxsrf=ALeKk019eteEpAwVf2Fk4qYo7TiwhuMQ_Q:1596666153666&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiqzqf3jIXrAhUisaQKHRayBWAQ_AUoAXoECBkQAw&biw=1920&bih=921#imgrc=M4wsJO0A7OQfTM
我正试图找出参数id\u活动,id\u电子邮件和url
但是,使用代码:
$url = htmlspecialchars_decode($url);
$parts = parse_url($url);
parse_str($parts['query'], $query);
打印$parts['query']时,它只会给我:
https://www.google.com/search?q=dog
因为URL的其余部分被认为是另一个参数…
那么如何从$url中获取所有url参数呢?在理想情况下,查询中传递的url是url编码的,而不是HTML编码的 在您的情况下,您可以手动替换所有
&
使用临时的方法,然后在解析URL后将它们全部替换回来。这不是很漂亮,但很管用:
$url = str_replace('&', '__TEMP__', $url);
$parts = parse_url($url);
parse_str($parts['query'], $query);
$urlParam = str_replace('__TEMP__', '&', $query['url']);
echo $urlParam;
在将$url放入url之前,您需要对其进行编码。$url是可变的,由于其他重要原因,我无法以任何方式进行修改,我只能更改$url解析参数的方式。不,这不正常,请尝试回显$query['url']