|
|
|
| Привет! Ищу не могу найти грамотно составленное РВ которое проверяет URL на валидность. Речь не идет о проверке существования, нужно только проверить верно ли он введен
Нашел такое рег выражение, но не слишком ли оно замудреное? И как мне кажется устаревшее, ведь домены бывают и русско буквенными
<?php
$url = "softtime.ru";
// софттайм.рф
// софттайм.ru
// и прочие
if (!preg_match("#^http://#i", $url)) { $url = "http://".$url; }
$pattern = "~^(?:(?:https?|ftp|telnet)://(?:[a-z0-9_-]{1,32}".
"(?::[a-z0-9_-]{1,32})?@)?)?(?:(?:[a-z0-9-]{1,128}\.)+(?:com|net|".
"org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?".
"!0[^.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(:[0-9]{1,5})?(?:/[а-яa-z0-9.,_@%\(\)\*&".
"?+=\~/-]*)?(?:#[^ '\"&<>]*)?$~i";
?>
|
| |
|
|
|
|
|
|
|
для: tima2010
(13.12.2011 в 22:11)
| | Это еще не замудренное... универсальное правило для URL - это довольно сложная задача. Да, пожалуй немного устарело. Добавить русский язык можно, изменив a-z на a-zа-яё, кроме того домен первого уровня [a-z]{2} лучше изменить хотя бы на [a-zа-яё]{2,6}. | |
|
|
|
|
|
|
|
для: cheops
(13.12.2011 в 22:14)
| | А если взять не универсальное?
Проверка требуется при регистрации пользователей, там тоже будет сложное рег выражение?
ведь получается нужно проверить:
Есть ли http://
после этого ограничение на количество символов до точки
домен первого уровня врятли будет
проверить на русские англ буквы цифры и -
проверить после точки на то же самое... хотя домены бывают вида demo.softtime.ru.. хм.. | |
|
|
|
|
|
|
|
для: tima2010
(13.12.2011 в 22:17)
| | А какова цель проверки? Т.е. что хотите запретить вводить? | |
|
|
|
|
|
|
|
для: cheops
(13.12.2011 в 22:18)
| | просто пишется условие если пользователь
ввел типа @#4121 то error
или ввел http://www.11111111111111111111111111111111.ru то error
или ввел http://www.123123'.ru то error
просто для подсказки ну и соответственно небольшой "защиты"
на сколько я понимаю, нужно сделать что то типа этого но он не дописан, к сожалению не знаю как проверить на количество символов:
<?php
$pattern= '|^http://[a-zA-Zа-яёА-ЯЁ0-9-]+(.[a-zA-Zа-яёА-ЯЁ0-9-]+)*(:[0-9]+)?(/.*)?$|i';
?>
|
В одной из темы нашел ваше сообщение, спасибо чуть не усложнил себе жизнь в будущем :):
Лучше всего заранее избавиться от www. и http://,
сделав адрес максимально коротким, тогда не зависимо от формы
адреса в базе данных его можно будет легко найти, например, при помощи того же оператора LIKE.
|
| |
|
|
|