PHP параметров внутри накопленного параметра url - PullRequest
0 голосов
/ 06 августа 2020

скажем, у меня есть 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?

1 Ответ

1 голос
/ 06 августа 2020

В идеальном сценарии 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;

Демо

...