Помогите составить рег. выражение.
Есть большой отладочный текст, из него необходимо достать email в рамке "for" и ";" (внутри должен быть мейл, наверное достаточно проверки на существование @), выглядит текст примерно так:
Foreigners is still taking the decision on Your case. Thus today 04.10.2018, we
sent a written request about the phase; for sacri.subba@yahoo.com;
text text text ... for today you; other e-mail test@mai.com;
Для email достаточно простейшей проверки на формат ввода (наличие собачки и домена):
"^for [a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+;$"
Этой регуляркой найдёшь строчку, где содержится нужный тебе фрагмент for user@example.com
. Далее можно сделать explode() этой строчки по пробелу и найти строку, соответствующую почте:
"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"
Рабочее решение, полученное опытным путём:
$pattern = '/for [A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\;/ui';
preg_match($pattern, $text, $res);
if ($res) {
$email = str_replace(';', '', explode(' ', $res[0])[1]);
}
В простом тексте все адреса электронной почты можно найти с помощью
preg_match_all('~\bfor\s+\K\S+@\S+\.\S+\b~u', $s, $matches)
См. демо регулярного выражения.
Подробности
\bfor
- целое слово for
\s+
- один и более пробельных символов\K
- удаляем весь найденный до сих пор текст из совпадения\S+@\S+
- один и более символов, отличных от пробельных, @
и снова один и более символов, отличных от пробельных\.
- точка\S+
- один и более символов, отличных от пробельных\b
- граница слова.PHP:
$s = <<<INPUT
Foreigners is still taking the decision on Your case. Thus today 04.10.2018, we
sent a written request about the phase; for sacri.subba@yahoo.com;
text text text ... for today you; other e-mail test@mai.com
for another###test@mai.com
INPUT;
if (preg_match_all('~\bfor\s+\K\S+@\S+\.\S+\b~u', $s, $matches)) {
print_r($matches[0]);
}
Результат:
Array
(
[0] => sacri.subba@yahoo.com
[1] => another###test@mai.com
)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
помогите исправить выборку которая считает количество заказов с авансом есть выборка
Уважаемые господа, добрый день!
Делаю регистрацию/авторизацию в приложении на Unity3d в связке с сервером на PHP+MySQLВстал вопрос: как мне связать переменную session с unity3d? Пример...