Как декодировать & из URL, чтобы header () работал (urldecode не работает)
У меня есть следующий URL: $url = 'http://mysite.com/?p=welcome&x=1&y=2';
Мне нужно расшифровать его так, чтобы header("Location: $url");
действительно работал.
Однако, использование urldecode($url)
не работает, потому что это не декодирование &
-> &
и поэтому браузер перенаправляется на http://mysite.com/?p=welcome&x=1&y=2
, что не удается.
Мне нужно его расшифровать так, чтобы он выглядел так: http://mysite.com/?p=welcome&x=1&y=2
Как мне это сделать?
4 ответа:
Попробуйте с
htmlspecialchars_decode
echo htmlspecialchars_decode('http://mysite.com/?p=welcome&x=1&y=2'); //"http://mysite.com/?p=welcome&x=1&y=2"
&
не кодируется URL (aka percent-encoding), но является HTML-сущностью. URL-кодировка будет выглядеть как%26
.Использование
html_entity_decode()
.
Я бы попробовал так:
$url = html_entity_decode($url); header("Location: $url");
Взято из http://php.net/manual/en/function.html-entity-decode.php
Я бы сделал это, потому что ваш
$url
не закодирован url, а закодирован html, с html-специальными символами, замененными соответствующей HTML-сущностью.
&
не кодируется url-адресом. Вам нужно использоватьhtmlspecialchars_decode()
http://php.net/manual/en/function.htmlspecialchars-decode.php