Извлечь адрес электронной почты из строки – php

Я хочу извлечь адрес электронной почты из строки, например:

<?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 означает любой символ без пробелов