Вопрос следующий. Есть URL вида
http://subdomain.domain.zone/dir1/dir2/filename.ext?val1=smth1&val2=smth2&val3=smth3#mark
Задача: передать этот URL методом GET. Одной переменной.
Есть ли в этом примере символы, корректная передача которых не гарантируется?
Таковыми, судя по всему, являются '&' и '='. Что ещё?
Просто я не вполне уверен, какие символы нужно заменять, а какие нет.
WinAmp играет: (умолк пока)
Здравствуйте, Astaroth, Вы писали:
http://subdomain.domain.zone/dir1/dir2/filename.ext?val1=smth1&val2=smth2&val3=smth3#mark
A>Задача: передать этот URL методом GET. Одной переменной.
A>Есть ли в этом примере символы, корректная передача которых не гарантируется?
A>Таковыми, судя по всему, являются '&' и '='. Что ещё?
A>Просто я не вполне уверен, какие символы нужно заменять, а какие нет.
Смотри RFC 2516. А вообще, больниство скриптовых языков предоставляют функции типа URLEncode/URLDecode, которые поддерживают нужные преобразования.
... << RSDN@Home 1.1.4 beta 1 >>
03.08.04 в 00:29 Lexey в своём письме писал(а):
> Здравствуйте, Astaroth, Вы писали:
>
> http://subdomain.domain.zone/dir1/dir2/filename.ext?val1=smth1&val2=smth2&val3=smth3#mark
>
> A>Задача: передать этот URL методом GET. Одной переменной.
> A>Есть ли в этом примере символы, корректная передача которых не
> гарантируется?
> A>Таковыми, судя по всему, являются '&' и '='. Что ещё?
>
> A>Просто я не вполне уверен, какие символы нужно заменять, а какие нет.
>
> Смотри RFC 2516. А вообще, больниство скриптовых языков предоставляют
> функции типа URLEncode/URLDecode, которые поддерживают нужные
> преобразования.
на самом деле даже по 2 вариации каждой:
' '=%20
' '=+
Posted via RSDN NNTP Server 1.9 beta
Здравствуйте, Astaroth, Вы писали:
A>Вопрос следующий. Есть URL вида
A>http://subdomain.domain.zone/dir1/dir2/filename.ext?val1=smth1&val2=smth2&val3=smth3#mark
A>Задача: передать этот URL методом GET. Одной переменной.
A>Есть ли в этом примере символы, корректная передача которых не гарантируется?
A>Таковыми, судя по всему, являются '&' и '='. Что ещё?
A>Просто я не вполне уверен, какие символы нужно заменять, а какие нет.
Если собираешься передавать такую строку GET-ом, то тебе нужно убрать или
заменить на что-нить "
http://". Сервер не принимает запросы, в которых
"
http://" встречается два раза.
Здравствуйте, Astaroth, Вы писали:
A>Вопрос следующий. Есть URL вида
A>http://subdomain.domain.zone/dir1/dir2/filename.ext?val1=smth1&val2=smth2&val3=smth3#mark
A>Задача: передать этот URL методом GET. Одной переменной.
A>Есть ли в этом примере символы, корректная передача которых не гарантируется?
A>Таковыми, судя по всему, являются '&' и '='. Что ещё?
A>Просто я не вполне уверен, какие символы нужно заменять, а какие нет.
Ой вей, я бы сделал проще — всю строку в Base64 и всего делов
F>Ой вей, я бы сделал проще — всю строку в Base64 и всего делов
Ой нет, я с этим уже накололся. В алфавит base64 входит "+", который является reserved в uri. Насколько я помню в пробел декодируется.
Здравствуйте, Astaroth, Вы писали:
A>Вопрос следующий. Есть URL вида
A>http://subdomain.domain.zone/dir1/dir2/filename.ext?val1=smth1&val2=smth2&val3=smth3#mark
A>Задача: передать этот URL методом GET. Одной переменной.
A>Есть ли в этом примере символы, корректная передача которых не гарантируется?
A>Таковыми, судя по всему, являются '&' и '='. Что ещё?
A>Просто я не вполне уверен, какие символы нужно заменять, а какие нет.
было тутАвтор: DSD
Дата: 25.07.04
там есть исходники, в которых есть функция кодирования URL:
function inet_url_encode_str($str) {
$arr = array();
$len = strlen($str);
for ($i=0;$i<$len;$i++) $arr[]=(preg_match('/[\dA-Za-z]/', $str{$i}))?$str{$i}:sprintf("%%%02X", ord($str{$i}));
return implode('',$arr);
}
суть: в отличие от RFC переводим в HEX вид (%XX) все, что не является цифрами и англицкими буквами.
работать будет железно
Здравствуйте, just_dmitry, Вы писали:
F>>Ой вей, я бы сделал проще — всю строку в Base64 и всего делов
_>Ой нет, я с этим уже накололся. В алфавит base64 входит "+", который является reserved в uri. Насколько я помню в пробел декодируется.
А и верно ведь! Опять я прокосячил

Вот что значит — не говори, двадцать раз не подумав...
З.Ы. А так хотелось блеснуть интеллектом