Как декодировать & из 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