Идеальный URL

Zh0rzh

Новичок
Автор оригинала: Flying
а схемы корме http(s) и ftp типа не существуют? :)
Существует. gopher, news, prospero, nntp ище более древних до кучи. Но для них надо писать отдельный регэксп, для каждока
да и много других вещей этот regexp не учитывает. номер порта, правильность пути, query string, fragment, возможные ошибки в имени домена и т.п.
Номер порта забыл :( Твоя правда.
Но вот все остальное...... Что ты имел в виду под правильностью пути? Приведи пример, а не плюйся словами.
 

aloner

Guest
Zh0rzh

Ты не напрягайся. :)
Про "правильность пути, query string, fragment, возможные ошибки в имени домена и т.п." - это он для красного словца сказал.

А вот номер порта надо, да.
 

Flying

Guest
отнюдь....

например, почему не проверяются вот такие вещи (по каждому из перечисленных мною пунктов, дабы не быть голословным):

1. правильность пути. покажите мне проверку на следующие неправильные пути:
http://www.foo.com/../../../file.php
http://www.foo.com\path\to\file.php

2. query string. покажите мне проверку на валидность параметров передаваемых в query string. напомню, что все символы, не вохдящие в LATIN1 должны быть заменены на %XX, где XX - шестнадцатиричный код символа.

3. fragment - проверки на его наличие в приведенном regexp'е нет, но это в принципе простительно, т.к. fragment'ом считается все, что находится за символом '#'

4. возможные ошибки в имени домена. покажите мне, где проверки на следующие неправильные домены:
http://www....foo....com
http://.www.foo.com
http://www.foo.com.
http://www.foo_bar.com
 

Zh0rzh

Новичок
- синтаксически правильный урл. По спецификации HTTP 1.1 имя дериктории в Урле может содержать точки.
- откланено. Во первых после верхнего домена обязателен тока /, а во-вторых все равно все браузеры его интерепретируют как / автоматически.
2. query string. покажите мне проверку на валидность параметров передаваемых в query string.
У меня начинают возникать сомнения в твоей компетентности. Что такое валидность строки запроса? Она может содеражать все, что угодно (за исключением некоторых символов). Программер сам ответственен за формирование и последующую обработку GET-строки.
напомню, что все символы, не вохдящие в LATIN1 должны быть заменены на %XX, где XX - шестнадцатиричный код символа.
Урлы содержащие не латинские символые считается не валидными. Я не должен отвечать за замену не латинских символов хексом.
3. fragment - проверки на его наличие в приведенном regexp'е нет, но это в принципе простительно, т.к. fragment'ом считается все, что находится за символом '#'
4. возможные ошибки в имени домена. покажите мне, где проверки на следующие неправильные домены:
http://www....foo....com
http://.[url]www.foo.com[/url]
http://www.foo.com.
http://www.foo_bar.com
Откланено. Все из этих урлов не были приняты валидными. а насчет фрагмента, советую протереть глаза и посмотреть в последную строчку.
 

Zh0rzh

Новичок
Изменения связанные с добавлением порта.
PHP:
 $reg_url= "((https?|ftp)://)($user(:$pass)?@)?([$w-]+(\\.[$w-]+)*\\.([1-250]|[$a]{1,11}))(:([$d]{1,5}))?".
           "(/(([$hs]|%[$hx]{2})+/?)*)".
              "(\\?[$hs]*)?".
              "(#[$rs$ur]*)?".
            "";
Если использовать данное регуляное выражение в контексте функции eregi, то части урла распределятся по массиву, имя которого передано третьим параметром, сделующим образом.
scheme - 1
login - 4
pass - 7
host - 9
topdomain - 11
port - 13
path - 14
file - 15
query_stribg - 17
flag - 18
 

Flying

Guest
дело ваше, я указал на погрешности, а принимать их ил нет - вам решать. в конце концов все это лично мне не нужно, просто подобные комментарии в контексте топика кажутся немного странными.... но еще раз - решать вам, в дальнейшие дискуссии я вступать не намерен.
 

Zh0rzh

Новичок
Автор оригинала: Flying
дело ваше, я указал на погрешности, а принимать их ил нет - вам решать. в конце концов все это лично мне не нужно, просто подобные комментарии в контексте топика кажутся немного странными.... но еще раз - решать вам, в дальнейшие дискуссии я вступать не намерен.
Под откланено подразумевалось, что регулярное выражение не засчитало урл валидным. Поэтому, собственно, погрешностей этих нет.
Благодарен за вннесение вклада в развитие этого рег. выражения :))
 

.des.

Поставил пиво кому надо ;-)
2Zh0rZh не могу понять чем вызван столь агрессивный тон?
Если ты не способен принимать критику, то не надо задавать вообще вопросы. Да часть указанных "ошибок" Flying не являются таковыми и твой рег урлы не пропустит.
Но некоторые моменты он указал тебе правильно
Что такое валидность строки запроса? Она может содеражать все, что угодно (за исключением некоторых символов). Программер сам ответственен за формирование и последующую обработку GET-строки
Это не так..Flying прав.

Вообщем если намерен продолжать в таком тоне, то думаю собеседников ты не найдешь. Решать тебе.
 

Zh0rzh

Новичок
Что такое валидность строки запроса? Она может содеражать все, что угодно (за исключением некоторых символов). Программер сам ответственен за формирование и последующую обработку GET-строки
Это не так..Flying прав.
Не пойму про какие параметры он имел ввиду?
Я вправе сгенерировать строку запроса, вида ?vasiliy@pupkin@Piter
Это не стандартное решение, кторыми часто пользуются программисты на Perl, C. Для каждого случая рег не предусмотришь. Может я в чем то не прав?

Вообщем если намерен продолжать в таком тоне, то думаю собеседников ты не найдешь. Решать тебе.
Наверное, ты прав. Так нельзя. Сорвался маленько. Да и тон указания мне этих погрешностей был тоже не идеален :)) Все равно благодарен
 
Сверху