В коллекцию: url (http||https||ftp)

Статус
В этой теме нельзя размещать новые ответы.

Slayter

Гуру форума
Регистрация
8 Апр 2006
Сообщения
231
Реакции
55
/^((http|https|ftp:(\/\/([a-zA-Z0-9-])+(\.([a-zA-Z0-9-])+)*(\.([a-zA-Z0-9~\/]){2,6}+)+)?$/
 
а теперь по слогам опиши что тут такое, а лучше где скопировал такое гениальное произведение, а лучше удали.
 
а теперь по слогам опиши что тут такое, а лучше где скопировал такое гениальное произведение, а лучше удали.


Поумничать не получилось. Смотрим название раздела и включаем мозг или то что от него осталось.
Регулярки не знать....
 
^ - начало шаблона
$ - конец шаблона
и начало и конец шаблона - метасимволы. эскейпятся.
(http|https|ftp) - строка начинается с http ИЛИ https ИЛИ ftp
:\/\/ - это "://" но по скольку "/" это метасимвол он эскейпится. символ эскейпа это "\", вот и получили.
([a-zA-Z0-9-])+ - указывается диапазон. нижний и верхний регистр буквы от a до z, кроме того символы от 0 до 9. знак + указывает на то, что это один или более символов.
аналогично с (\.([a-zA-Z0-9-])+)* - "." - это опять же метасимвол и он эскейпится. далее тот же шаблон букв латинского алфавита от a до z в нижнем и верхних регистрах. знак + указывает на то, что длина этой подстроки может быть не менее одного символа. а весь шаблон взять в скобки и затем поставлен знак "*" - что значит от от нуля символов. т.е. если таким образом мы на дадим написать что-то вроде Для просмотра ссылки Войди или Зарегистрируйся
(\.([a-zA-Z0-9~\/]){2,6}+) - шаблон для зоны. от 2 до 6 символов + "." + необязательный "/" - чтобы не сильно напрягать пользователя.

таким образом мы получаем валидный шаблон для чего-то типа Для просмотра ссылки Войди или Зарегистрируйся ;)
 
  • Заблокирован
  • #5
строго говоря у меня предложенный паттерн работать отказался..

проедлагаю свой вариант:
(^(?>(http|https|ftp):(\/\/(?>(\w|\d|-)+\.)?(\w|\d|-)+\.(\w|\d){2,6}(\/)?)

не самый производительный (в основном из-за альтернатив), но вплоне рабочий паттерн..

зы..
т.е. если таким образом мы на дадим написать что-то вроде Для просмотра ссылки Войди или Зарегистрируйся
думаю вот такого как раз мы давать писать не должны, потому, как таких адресов не существует..
 
не "на", а "не" имелось ввиду. опечатался.
+ туда же про эскейпинг и конец строки. конец на конце (фигассе скозал) не эскейпится
 
  • Заблокирован
  • #7
кстати это еще не все (я про свой пример)..
нужно убрать метасимвол ^ в начале паттерна, что бы он смог нормально искать по всему тексту..

+ туда же про эскейпинг и конец строки. конец на конце (фигассе скозал) не эскейпится
а если сие на русский перевести?..
 
^(?:https?|ftp)\:\/\/(?:[a-z0-9]\.|[a-z0-9][-a-z0-9]{0,61}[-a-z0-9]\.)*(?:[a-z]{2}|com|edu|gov|int|mil|net|org|biz|info|name|museum|coop|aero)$

обрабатывает все комбнации, хоть Для просмотра ссылки Войди или Зарегистрируйся

незабываем про модификатор i или PCRE_CASELESS
про \d или \w читаем хелп
перед использованием $url = trim($url, '/ ');
если есть вопросы и сомнения, читайте доки
 
ты забыл про зону .mobi

а зачем $url = trim($url, '/ ');
?
 
но по скольку "/" это метасимвол он эскейпится

а что этот метасимвол означает? случайно не концы строки? так может другой ограничитель логично бы использовать?
о модификаторах кто-то слышал, типа что #[aA]# это то же что и #a#i ?
а о \d, \w?
а о отличии () от (?:) ?
да и как в урле могут быть заглавные буквы?

бредовый шаблон
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху