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

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

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

 

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

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

тема: Проверка логина и e-mail при помощи регулярных выражений
 
 автор: lagu   (13.08.2007 в 22:50)   письмо автору
 
 

вот нужна в принципе простая проверка логина, т.е. чтоб были только буквы латинские, дефис, подчеркивание, цифры

да и мыло тоже. вообще вот такя бяка, поначалу вроде работала а щас нифига:

if (!ereg($email, "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$")) {
            header('Location: index.php?id=no_email'); 
            exit;
                            }


ну вот как это сделать?

   
 
 автор: cheops   (13.08.2007 в 22:55)   письмо автору
 
   для: lagu   (13.08.2007 в 22:50)
 

Требуется именно POSIX-регулярное выражение или Perl-регулярное выражение тоже подойдёт? Дело в том, что POSIX-регулярные выражения будут исключены из ядра PHP в версии 6.

   
 
 автор: lagu   (13.08.2007 в 23:07)   письмо автору
 
   для: cheops   (13.08.2007 в 22:55)
 

да мне бы хоть как-нибудь)) просто ваабще туплю по страшному в этом вопросе... уже 3 дня и 3 ночи не въехать... все дело стоит...
я так понимаю preg_match тогда будет, я не против! =)
тока как?? скажите пожалуста - УМОЛЯЮ!!!

:0)

   
 
 автор: cheops   (14.08.2007 в 10:30)   письмо автору
 
   для: lagu   (13.08.2007 в 22:50)
 

Проверить логин можно при помощи следующего выражения
<?php
  
if(!preg_match("|^[-a-z0-9_]+$|i"$login)) exit("Логин содержит недопустимые символы");
?>

e-mail можно проерить так
<?php
  
if (!preg_match("/^[-0-9a-z_\.]+@[-0-9a-z^\.]+\.[a-z]{2,6}$/i"$email)) 
    exit(
"Введите e-mail в виде <i>something@server.com</i>");
?>

   
 
 автор: ZeeG   (14.08.2007 в 11:26)   письмо автору
 
   для: cheops   (14.08.2007 в 10:30)
 

Регулярное выражение типа:

<?php
  
if (!preg_match("/^[-0-9a-z_\.]+@[-0-9a-z^\.]+\.[a-z]{2,6}$/i"$email)) 
    exit(
"Введите e-mail в виде <i>something@server.com</i>");
?> 

пропустит и -something@server.com и _something@server.com
Такие адреса бывают?

   
 
 автор: Trianon   (14.08.2007 в 12:32)   письмо автору
 
   для: ZeeG   (14.08.2007 в 11:26)
 

Бывают.

   
 
 автор: ZeeG   (14.08.2007 в 12:38)   письмо автору
 
   для: Trianon   (14.08.2007 в 12:32)
 

И начинаются они именно с - или _ ? Я конечно не спец, но все-таки ни разу не видел таких имен?

   
 
 автор: Unkind   (14.08.2007 в 13:08)   письмо автору
 
   для: ZeeG   (14.08.2007 в 12:38)
 

А Вам бы хотелось такое имя? :)

   
 
 автор: ZeeG   (14.08.2007 в 13:09)   письмо автору
 
   для: Unkind   (14.08.2007 в 13:08)
 

Мне?

   
 
 автор: Unkind   (14.08.2007 в 13:12)   письмо автору
 
   для: ZeeG   (14.08.2007 в 13:09)
 

Да, Вам. Чтобы с "_" начиналось.

   
 
 автор: ZeeG   (14.08.2007 в 13:16)   письмо автору
 
   для: Unkind   (14.08.2007 в 13:12)
 

Да речь и про то что нет. Я и говорю, что НЕТ таких имен, и что выражение выше выпускает его из виду!!!!!

   
 
 автор: Trianon   (14.08.2007 в 13:27)   письмо автору
 
   для: ZeeG   (14.08.2007 в 13:16)
 

Такие имена есть.
А то, что Ваш скрипт будет их блокировать, будет проблемой пользователей Вашего скрипта.

Я вот ни разу не видел Австралию ... живьем. И писем мне оттуда никто не писал.
Но почему-то у меня не возникает сомнения, что она есть.

   
 
 автор: Unkind   (14.08.2007 в 13:44)   письмо автору
 
   для: ZeeG   (14.08.2007 в 13:16)
 

Я и говорю, что НЕТ таких имен
Есть. Я Вам намекал, что просто это некрасивые имена. Мало кто их использует, но отсюда не следует, что таких имен нет и уж тем более запрещены.

   
 
 автор: ZeeG   (14.08.2007 в 13:53)   письмо автору
 
   для: Unkind   (14.08.2007 в 13:44)
 

Да Вы были правы test@i.am моя фун-я не считала верным. Поправил

<?php
function email($mail)
 {
  
$sym ="\!\@\#\$\%\^\&\*\(\)\+\=\s\,\.\<\>\?\/\{\}\[\]\;\'";
  
$pattern "/^[^".$sym."]*(\w+([\-\.]?))*[\w+]?([^".$sym."])@[^".$sym."\-\_]*((\w+(\-\.?))*\w+)+\.[\w\-\.]+[^".$sym."]$/i";  
  if(!
preg_match($pattern,$mail)){
  return 
false;
  }
  return 
true;
 }
?>

Как сейчас?
PS Я потому и спрашиваю оценки т.к. второй день с regex

   
 
 автор: ZeeG   (14.08.2007 в 21:06)   письмо автору
 
   для: ZeeG   (14.08.2007 в 13:53)
 

Так никто ничего не скажет?

   
 
 автор: Trianon   (14.08.2007 в 21:28)   письмо автору
 
   для: ZeeG   (14.08.2007 в 21:06)
 

Зачем Вы пытаетесь их фильтровать?

   
 
 автор: ZeeG   (14.08.2007 в 21:30)   письмо автору
 
   для: Trianon   (14.08.2007 в 21:28)
 

Мне казалось что так будет правильно

   
Rambler's Top100
вверх

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