parse_url () проблема, когда одним из параметров является url - PullRequest
3 голосов
/ 11 февраля 2011

Я называю 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?

Ответы [ 2 ]

3 голосов
/ 11 февраля 2011

Перед включением вашего URL в качестве параметра get используйте urlencode

$full_url = 'http://site.com/process.php?for=' . urlencode('http://www.anotherwebsite.com');

Эта функция удобна при кодировании строкидля использования в части запроса URL-адреса, как удобный способ передачи переменных на следующую страницу.


Чтобы отменить результат urlencode, используйте urldecode.Как отметил Марио в комментарии ниже, параметры $_GET уже urldecoded.

2 голосов
/ 11 февраля 2011

Ну, сначала вы должны urlencode() параметр for=, затем в process.php вы можете просто сделать

$url = $_GET["for"];
$url = urldecode($url); // http://www.anotherwebsite.com

Вот функции: http://php.net/manual/en/function.urlencode.php http://php.net/manual/en/function.urldecode.php

...