Пытаюсь разобраться с регулярным выражением, которое ищет почту.
$text = 'foo foo@bar.lol bar lol baz baz@qwe.asdf qwe asdf';
if (preg_match_all('~[-a-z0-9_]+(?:\\.[-a-z0-9_]+)*@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+~i', $text, $M, PREG_SET_ORDER)) {
foreach ($M as $m) {
echo $m[0] . PHP_EOL;
}
}
else echo 'not found';
Но не могу понять несколько моментов:
(?:\\.
- одна часть экранирует точку,а первая со знаком вопроса и двоеточием?*@
- эта часть просто говорит, что до "собаки" любой символ?[-a-z0-9_]+(?:\\.[-a-z0-9_]+)
- почему одна часть сгруппирована, а другая нет? (?:...)
- незахватываемая группа. Используется что бы применить квантификатор *
(0 и больше раз) к группе, отличается от обычной группировки (...)
тем, что не создает ссылку и не занимается память, актуально если мы не планируем переиспользовать группу.*
- это квантификатор, как написано уже в первом пункте, он относится к группе (?:\\.[-a-z0-9_]+)*
и означает, что эта группа может повториться 0+ раз[-a-z0-9_]+(?:\\.[-a-z0-9_]+)
- тут сложнее сказать, скорее всего из-за точки, так как перед @
должен стоять символ отличный от точки.<?php
$email = "john.doe@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}
?>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Всем привет, коллеги помогите разобраться с ошибкой при валидации формы приходит ответ вместе с ошибкой , чтото связанно с ошибками но не могу...
Всем приветЦиклом foreach подгружаю из базы данных посты как на примере: "пост 1" "пост 2" "пост 3" и тд