[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проблема с preg_match
Lenarfate
подскажите, что не так в моей регулярке??постоянно выдает 'Не верный формат e-mail'.


if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,4}$/i", $email))
$errors[] = 'Не верный формат e-mail';




Спустя 45 минут, 12 секунд (4.01.2010 - 17:57) VolCh написал(а):
Вместо \ попробуй \\ rolleyes.gif

Спустя 2 часа, 18 минут, 15 секунд (4.01.2010 - 20:15) Dron19 написал(а):
В ней все нормально, просто убери $ и лучше в начале и в конце поставь \b

Спустя 2 часа, 23 минуты, 37 секунд (4.01.2010 - 22:39) Lenarfate написал(а):
пасиба)

Спустя 11 часов, 13 минут, 31 секунда (5.01.2010 - 09:52) ИНСИ написал(а):
Lenarfate кстати, если будет такой emal: info@my-site.ru то выдаст ошибку, попробуй это
preg_match("|[0-9a-z_]+@[0-9a-z-_^\.]+\.[a-z]{2,3}|i", $_POST['email']);

Спустя 13 минут, 25 секунд (5.01.2010 - 10:06) twin написал(а):
welbox2, без обид. Я вот который раз замечаю, что ты советуешь то, в чем сам нифига не разобрался.
Зачем посоветовал:
Цитата
просто убери $ и лучше в начале и в конце поставь \b

Ты знаешь для чего этот знак там был?

Твоя регулярка работать не будет. А вот топикстартер просто видимо где то неудачно спер регулярку и пропустил один знак. smile.gif
Вот welbox2, взялся - доделывай. Я не скажу какой, найди и объясни товарищу.


Спустя 23 часа, 44 минуты, 35 секунд (6.01.2010 - 09:50) ИНСИ написал(а):
twin, если я советую в том, в чем не понимаю, я говорю об этом. Но ты сейчас обвиняешь меня в том, что я не делал. Посмотри внимательно автора твоей цитаты, это Dron19 писал!!!

Также, моя регулярка будет 100% работать. Именно эту регулярку делал я сам, поэтому говорить, что не понимаю, не буду!!!

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

Спустя 7 минут, 25 секунд (6.01.2010 - 09:58) twin написал(а):
Цитата
Посмотри внимательно автора твоей цитаты, это Dron19 писал!!!

Действительно... Писал сообщение не ты. Но твоя регулярка не рабочая именно потому, что в ней отсутствует привязка. Именно то, что предложил сделать Dron19.
Знач ты тем более не понимаешь, зачем это нужно, раз видел что посоветовали откровенную чушь и сам написал в том же духе.

Цитата
А тебе пожелание: Перед тем, как говорить, подумай пожалуйста, правильно ли ты думаешь?! Потому что все твои мысли, сказанные выше, ерунда!
Я не всегда прав, но всегда думаю, прежде чем писать. И анализирую. В данный момент мне извиняться не за что, потому что предложенный тобой вариант не рабочий, и не рабочий именно по тому, чему я приписал тебе авторство. Нет разницы, кто автор того поста. Исправь свою регулярку.

Спустя 8 минут, 36 секунд (6.01.2010 - 10:06) ИНСИ написал(а):
twin останемся при своем мнении. Я пользуюсь этой регуляркой и меня она не подводит. Работает как часы. А ты хотя бы извинился. Ладно, разные люди, по разному смотрим на "ценности".

Спустя 1 час, 3 минуты, 38 секунд (6.01.2010 - 11:10) twin написал(а):
Извиниться должен ты. За свои непродуманные действия. Вот тебе тест для твоих "часов":
<?php 
if(!empty($_POST['ok']) && !empty($_POST['email']))
{

if(!preg_match("|[0-9a-z_]+@[0-9a-z-_^\.]+\.[a-z]{2,3}|i", $_POST['email']))
echo 'Ой блин, не пускает!!!';
else
echo 'Это что, разве правильный формат: <b>'. $_POST['email'] .'</b>????';
}
?>
<form action="" method="post">
<
input name="email" type="text" /><br />
<
input name="ok" type="submit" /></form> <br />
dog1@dog2@dog3@mail.ru<br />
mail@tut_nelzja_takih_chertochek.ru<br />
а_тут_вообще_по_русски_mail@.mail.ru<br />
или вообще такs@mail.ru<br />
%!****
12345№№№;;;a@mail.ru<br />
mail@mail.rurururururururururururururu</span>


В низу примеры - копируй и удивляйся. Могу еще подогнать.

Спустя 1 час, 2 минуты, 54 секунды (6.01.2010 - 12:13) ИНСИ написал(а):
twin извини. smile.gif оказывается да, не получилось. посидел и сделал это, так пойдет?

function checkEmail($email)
{
$user = '[a-zA-Z0-9_\-\.\+\^!#\$%&*+\/\=\?\`\|\{\}~\']+';
$domain = "(?sad.gif?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.?)+";
$ipv4 = '[0-9]{1,3}(\.[0-9]{1,3}){3}';
$ipv6 = '[0-9a-fA-F]{1,4}(\:[0-9a-fA-F]{1,4}){7}';
return preg_match("/^$user@($domain|(\[($ipv4|$ipv6)\]))$/", $email);
}


блин там смайл добавляется... в общем, ты наверное знаешь какие символы там

Спустя 29 минут, 51 секунда (6.01.2010 - 12:43) twin написал(а):
Все гораздо проще. Символы ^ в начале паттерна и $ в конце обозначают привязку к началу и концу строки. И еще, в доменном имени не может быть нижнего подчеркивания. Вот так хотя бы надо:
<?php 
if(!empty($_POST['ok']) && !empty($_POST['email']))
{

if(!preg_match("|^[a-z0-9_\.-]+@([a-z0-9]+\.)+[a-z]{2,4}$|i", $_POST['email']))
echo 'Ой блин, не пускает!!!';
else
echo 'Вот это правильный формат: <b>'. $_POST['email'] .'</b>';
}
?>
<form action="" method="post">
<
input name="email" type="text" /><br />
<
input name="ok" type="submit" /></form> <br />
mail@mail.ru<br />
dog1@dog2@dog3@mail.ru<br />
mail@tut_nelzja_takih_chertjchek.ru<br />
а_тут_вообще_по_русски_mail@.mail.ru<br />
или вообще такs@mail.ru<br />
%
$12345№№№;;;a@mail.ru<br />
mail@mail.rurururururururururururururu</span>

Вообще, полная регулярка занимает несколько строк, но в 99% случаев этого вполне достаточно.

PS Извиняться не передо мной нужно, перед тредстартером. smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.