PHP 内的参数 url 累计参数
PHP parameters inside url cumulated parameter
假设我有一个 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=2ahUKEwiqzqf3jIXrAhUisaQKHRayBWAQ_AUoAXoECBkQAw&biw=1920&bih=921#imgrc=M4wsJO0A7OQfTM
我正在尝试获取参数 id_campaign、id_email 和 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-encoded,而不是 HTML-encoded。
在你的情况下你可以做的是用一些临时的东西手动替换所有 &
,然后在解析 URL 之后将它们全部替换回来。这不是很漂亮,但有效:
$url = str_replace('&', '__TEMP__', $url);
$parts = parse_url($url);
parse_str($parts['query'], $query);
$urlParam = str_replace('__TEMP__', '&', $query['url']);
echo $urlParam;
假设我有一个 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=2ahUKEwiqzqf3jIXrAhUisaQKHRayBWAQ_AUoAXoECBkQAw&biw=1920&bih=921#imgrc=M4wsJO0A7OQfTM
我正在尝试获取参数 id_campaign、id_email 和 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-encoded,而不是 HTML-encoded。
在你的情况下你可以做的是用一些临时的东西手动替换所有 &
,然后在解析 URL 之后将它们全部替换回来。这不是很漂亮,但有效:
$url = str_replace('&', '__TEMP__', $url);
$parts = parse_url($url);
parse_str($parts['query'], $query);
$urlParam = str_replace('__TEMP__', '&', $query['url']);
echo $urlParam;