Xpoint
   [напомнить пароль]

разделитель & и специальные последовательности в URL

Метки: [без меток]
2007-07-08 01:13:42 [обр] Edmond(0/16)[досье]

Имеем: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Столкнулся с такой особенностью:

есть URL:
http://test.ru/?id=1&reg_type=255
чтобы он верно воспринимался его следует описать как:
href="http://test.ru/?id=1&amp;reg_type=255"

Это происходит потому, что броузер воспринимает &reg как символ (r)...
Подскажите, объясняется ли эта ситуация стандартом, и в идеальном случае — что и как правильно?
То есть прикладная сторона моего вопроса касается анализа URL, и обработки &amp;.

спустя 54 минуты [обр] Евгений Петров(0/1055)[досье]
У W3C в описании HTML 4.0 есть рекомендация:
Authors should use "&amp;" (ASCII decimal 38) instead of "&" to avoid confusion with the beginning of a character reference (entity reference open delimiter)
спустя 1 час 54 минуты [обр] Marat Tanalin(4/78)[досье]
Иначе говоря, поскольку символ & является служебным, определяя начало подстановки (entity), собственно амперсанд в качестве символа должен кодироваться подстановкой &amp;.
спустя 5 часов [обр] Edmond(0/16)[досье]
Евгений Петров[досье]
То есть это сводиться к тому, что использование & в качестве разделителей параметров URL является собственно не оправданным, и следует пользоваться ;?
спустя 2 часа 18 минут [обр] Евгений Петров(0/1055)[досье]
Edmond[досье] Насколько я понимаю, именно ; является корректным разделителем.
Однако, уровень моих знаний в этом вопросе не даёт возможности утверждать, что это будет надёжно работать.
спустя 1 час 32 минуты [обр] Алексей Севрюков(0/1280)[досье]

Евгений Петров[досье] не знаю как в PHP (там встроенный разбор входных параметров вроде как), а в Perl QUERY_STRING парсится руками и можно ставить в т.ч. и свои разделители, ; AFAIK описан в стандарте и его тоже можно использовать.

P.S.Посмотрел сейчас для примера модуль perldoc CGI::Simple, он поддерживает и & и ;.

спустя 1 час 26 минут [обр] Евгений Петров(0/1055)[досье]
А вообще тема обсуждалась неоднократно.
спустя 52 минуты [обр] Edmond(0/16)[досье]

Евгений Петров[досье], Алексей Севрюков[досье]
Да, вы правы. Я раньше не понимал, почему советуют использовать ; вместо &, теперь ясно.
Хотя броузеры стоит быть честным при генрации форм всё равно используют &...
да и сам случай с &reg_ — скорее всего глюк броузеров.
Переходим на ;.

Тему стоит закрыть.

Powered by POEM™ Engine Copyright © 2002-2005