Проблема parse_url(), когда одним из параметров является URL
Вопрос
Я вызываю PHP-скрипт http://site.com/process.php
который принимает URL-адрес в качестве одного из своих параметров. for=
http://site.com/process.php?for=http://www.anotherwebsite.com
Затем я делаю это и пытаюсь parse_url()
но parse_url() выдает ошибку анализа.
$uri = $_SERVER['REQUEST_URI']; // /process.php?for=http://www.anotherwebsite.com
parse_url($uri);
Как я могу закодировать for
параметр либо на отправляющей стороне (в URL-адресе), либо на принимающей стороне (php), чтобы parse_url()
понимает, что это просто параметр, похожий на URL?
Решение
Ну, сначала ты должен urlencode()
тот for=
параметр, затем в process.php
, вы можете просто сделать
$url = $_GET["for"];
$url = urldecode($url); // http://www.anotherwebsite.com
Вот функции:http://php.net/manual/en/function.urlencode.phphttp://php.net/manual/en/function.urldecode.php
Другие советы
get
, используйте urlencode
.
$full_url = 'http://site.com/process.php?for=' . urlencode('http://www.anotherwebsite.com');
Эта функция удобна, когда кодирование строки, которая будет использоваться в Запрос часть URL, как удобно способ пройти переменные к следующему страница.
Чтобы изменить результат генеракодицетагкода, используйте generacodictagcode .Поскольку Марио указал на комментарии ниже, параметики
urlencode
уже Urledecoded.