Я хочу извлечь адрес электронной почты из строки, например:
<?php // code $string = 'Ruchika <ruchika@example.com>'; ?>
Из приведенной выше строки я хочу получить адрес электронной почты ruchika@example.com
.
Пожалуйста, порекомендуйте, как этого добиться.
Попробуй это
<?php $string = 'Ruchika < ruchika@example.com >'; $pattern = '/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([az]{2,3})(?:\.[az]{2})?/i'; preg_match_all($pattern, $string, $matches); var_dump($matches[0]); ?>
см. демо здесь
Второй метод
<?php $text = 'Ruchika < ruchika@example.com >'; preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $text, $matches); print_r($matches[0]); ?>
Смотрите демо здесь
Проверьте эти два сообщения stackoverflow:
№ 1 Для дальнейшего чтения.
№ 2 Для дальнейшего чтения.
попробуйте этот код.
<?php function extract_emails_from($string){ preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $string, $matches); return $matches[0]; } $text = "blah blah blah blah blah blah email2@address.com"; $emails = extract_emails_from($text); print(implode("\n", $emails)); ?>
Это сработает.
Благодарю.
Это основано на ответе Ниранджана, предполагая, что у вас есть входной адрес электронной почты, заключенный внутри символов <и>). Вместо того, чтобы использовать регулярное выражение для захвата адреса электронной почты, здесь я получаю текстовую часть между символами <и>. В противном случае я использую строку, чтобы получить всю электронную почту. Конечно, я не сделал никакой проверки на адрес электронной почты, это будет зависеть от вашего сценария.
<?php $string = 'Ruchika <ruchika@example.com>'; $pattern = '/<(.*?)>/i'; preg_match_all($pattern, $string, $matches); var_dump($matches); $email = $matches[1][0] ?? $string; echo $email; ?>
Вот разветвленная демонстрация .
Конечно, если мое предположение неверно, то этот подход потерпит неудачу. Но, основываясь на ваших данных, я считаю, что вы хотите извлечь электронные письма, заключенные в символы <и>.
Вы также можете попробовать:
email=re.findall(r'\S+@\S+','ruchika@example.com') print email
где \S
означает любой символ без пробелов