Автоматическое добавление косой черты в urlencoded URL - PullRequest
3 голосов
/ 30 сентября 2010

Я очень озадачен следующим:

echo("<a href='http://".urlencode("www.test.com/test.php?x=1&y=2")."'>test</a><br>");

echo("<a href='http://"."www.test.com/test.php?x=1&y=2"."'>test</a>");

На первую ссылку добавляется завершающий слеш (это вызывает у меня проблемы) Второй ссылки нет.

Может кто-нибудь помочь мне понять, почему. Очевидно, что это как-то связано с urlencode, но я не могу выяснить, что.

Спасибо с

Ответы [ 3 ]

2 голосов
/ 30 сентября 2010

Вы не должны использовать urlencode() для отображения URL, если они не содержат некоторые нестандартные символы.

В приведенном примере нет ничего необычного.

Пример

$query = 'hello how are you?';

echo 'http://example.com/?q=' . urlencode($query);
// Ouputs http://example.com/?q=hello+how+are+you%3F

См., Я использовал это, потому что переменная $query может содержать пробелы, вопросительные знаки и т. Д. Я не могу использовать вопросительный знак, потому что он обозначает начало строки запроса, например, index.php?page=1.

На самом деле, этот пример был бы лучше просто выводить, чем echo 'd.

Кроме того, когда я попробовал ваш пример кода, я не получил косую черту, фактически я получил

<a href='http://www.test.com%2Ftest.php%3Fx%3D1%26y%3D2'>test</a>
1 голос
/ 30 сентября 2010

Вы должны использовать urlencode() для параметров только ! Пример:

echo 'http://example.com/index.php?some_link='.urlencode('some value containing special chars like whitespace');

Вы можете использовать это для передачи URL и т. Д. На ваш URL.

1 голос
/ 30 сентября 2010

строка urlencode (строка $ str)

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

Ваш urlencode не используется должным образом в вашем случае.

Плюс, echo обычно не идет с () это должно быть echo "<a href='http [...]</a>";

...