Подскажите пожалуйста как в регулярном выражении проверить правильность адреса почты? То есть чтоб в передаваемой переменной $email обязательно были символы '@' и '.'
Правильней всего так имхо Код (Text): preg_match('~^[a-z0-9_\.-]+@[a-z0-9_\.-]+\.[a-z]{2,6}$~i', $email);
Не самы удачный пример. Просто для новичков и понимания. PHP: <?php error_reporting(E_ALL | E_STRICT); ini_set("display_errors", "1"); setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251'); [email=$text='hello@bk.ru]$text='hello@bk.ru[/email] , [email=bluedytel@mail.de]bluedytel@mail.de[/email]'; $poisk='/([^,]+@.+?\.(?:com|ru|de|en))/si'; preg_match_all($poisk,$text,$match); foreach ($match[1] as $value) { echo $value; echo '<br>'; } ?>
Тогда более удачный коллега )) PHP: <?php error_reporting(E_ALL | E_STRICT); ini_set("display_errors", "1"); [email=$text='bluedytel@mail.de]$text='bluedytel@mail.de[/email]'; $poisk='/(.+?@.+?\.(?:com|ru|de|en))/si'; if(preg_match_all($poisk,$text,$match)) { echo 'правильно'; } else { echo 'ой как не правильно'; } ?>
http://php.net/manual/en/book.filter.html PHP: <?php var_dump(filter_var([email='bob@example.com]'bob@example.com[/email]', FILTER_VALIDATE_EMAIL)); //string(15) "bob@example.com" var_dump(filter_var('bo\k/k-*b@example.com', FILTER_VALIDATE_EMAIL)); //bool(false) ?> Одной строкой PHP: <?php echo(filter_var($email, FILTER_VALIDATE_EMAIL) ? 'valid' : 'invalid'); ?>