Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка доменного имени с русскими буквами
 
 автор: tima2010   (13.12.2011 в 22:11)   письмо автору
 
 

Привет! Ищу не могу найти грамотно составленное РВ которое проверяет 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.,_@%\(\)\*&amp;".
   
"?+=\~/-]*)?(?:#[^ '\"&amp;<>]*)?$~i";
?>

  Ответить  
 
 автор: cheops   (13.12.2011 в 22:14)   письмо автору
 
   для: tima2010   (13.12.2011 в 22:11)
 

Это еще не замудренное... универсальное правило для URL - это довольно сложная задача. Да, пожалуй немного устарело. Добавить русский язык можно, изменив a-z на a-zа-яё, кроме того домен первого уровня [a-z]{2} лучше изменить хотя бы на [a-zа-яё]{2,6}.

  Ответить  
 
 автор: tima2010   (13.12.2011 в 22:17)   письмо автору
 
   для: cheops   (13.12.2011 в 22:14)
 

А если взять не универсальное?
Проверка требуется при регистрации пользователей, там тоже будет сложное рег выражение?

ведь получается нужно проверить:
Есть ли http://
после этого ограничение на количество символов до точки
домен первого уровня врятли будет
проверить на русские англ буквы цифры и -
проверить после точки на то же самое... хотя домены бывают вида demo.softtime.ru.. хм..

  Ответить  
 
 автор: cheops   (13.12.2011 в 22:18)   письмо автору
 
   для: tima2010   (13.12.2011 в 22:17)
 

А какова цель проверки? Т.е. что хотите запретить вводить?

  Ответить  
 
 автор: tima2010   (13.12.2011 в 22:24)   письмо автору
 
   для: 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.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования