Как декодировать & из 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 (он же процент-кодирование), но является 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