РВ проверка E-mail

id9999i

Новичок
РВ проверка E-mail

Здравствуйте!
Скажите пожалуйста, что не так в моей функции?
PHP:
<?php
$str	= "[email protected]";
$qwe	= preg_match ("!/^[a-z0-9]+(\@[a-z0-9]+)(\.[a-z0-9]+){2,}$!", $str, $result);
echo $result[0];
?>
 

id9999i

Новичок
Большое спасибо!
Обьясните пожалуйста почему символ "@" не экранируется и что означает /i ?
 

Активист

Активист
Команда форума
Кстати, я тут смотрю, яндекс и гугл начал отдавать русские домены - это огромный шаг, имхо. А что там с почтой? Русская почта поддерживаться будет?) Стоит ли пересматривать проверку введения корректности сайто и урлов..?
 

id9999i

Новичок
+ еще почемуто при выполнении
PHP:
<?php

$str	= "[email protected]";
$qwe	= preg_match ("/^[a-z0-9\._-]+@[a-z0-9\.-]+\.[a-z]{2,10}$/i", $str, $result);
echo $result[0];
echo $result[0][1];
echo $result[1];
?>
выводится [email protected]
вторая "m" откуда?
 

Активист

Активист
Команда форума
id9999i
А зачем его экранировать? Вроде не спец символ. i - это модификатор, говорить что все выражение является регистронезависимым http://ru.php.net/manual/en/reference.pcre.pattern.modifiers.php

-~{}~ 19.07.09 23:28:

id9999i
Вопервых, у тебя нет здесь вложенных масок (в рег выражении это скобки), которые передавались бы в $result. Для дебага используй var_dump
PHP:
<?php

$str    = "[email protected]";
$qwe    = preg_match ("/^[a-z0-9\._-]+@[a-z0-9\.-]+\.[a-z]{2,10}$/i", $str, $result);
echo "<pre>"; var_dump($result);
?>
 

id9999i

Новичок
Пока речь о РВ:
Что означают символы "!".
(в книжке примеров много и в них встречаются символы "!" в начале и в конце шаблона, но нигде не дается объяснение, зачем они нужны?)
 

Активист

Активист
Команда форума
$result[0][1] - это символ 'm'
$result[1] - не существует (undefined)

http://phpfaq.ru/debug

-~{}~ 19.07.09 23:41:

1. Я вообще-то не знаю что такое PB
2. ! - смотря где применяется. Читай мануал - http://ru.php.net/manual/en/regexp.reference.assertions.php
3. Если после внимательного поиска в книжке твоей ты не найдешь описание символа ! - выкинь книжку свою

-~{}~ 19.07.09 23:51:

> в начале и в конце шаблона
А.. Это "обертка", ставятся сначала и в конце шаблона, можно использовать разные символы, главное, чтоб они были одинаковые с начала и в конце., используй хоть / , хоть #, хоть ~
 

Активист

Активист
Команда форума
id9999i
А что в книжке не написано?
Основная цель - отделить шаблон от модификаторов шаблона, т.к. в противном случае модификатор будет считаться частью шаблона.
 

dimagolov

Новичок
id9999i, шаблон регулярки состоит из собственно выражения и модификаторов. выражение должно быть ограничено с обоих сторон одинаковым символом, который не совпадает со служебными символами самой регулярки и (желательно) не совпадает с теми символами, которые тестируются. обычный ограничитель это прямой слеш '/', но если тестируем, скажем URL, то это крайне неудобно, так как все разделители пути придется экранировать. поэтому можно использовать как ограничитель нечто, что мы не используем для разделения компонент URL, например #
 
Сверху