从字符串中提取电子邮件地址 - php
2022-08-30 14:26:30
我想从字符串中提取电子邮件地址,例如:
<?php // code
$string = 'Ruchika <ruchika@example.com>';
?>
从上面的字符串中,我只想获取电子邮件地址。ruchika@example.com
请推荐如何实现这一目标。
我想从字符串中提取电子邮件地址,例如:
<?php // code
$string = 'Ruchika <ruchika@example.com>';
?>
从上面的字符串中,我只想获取电子邮件地址。ruchika@example.com
请推荐如何实现这一目标。
试试这个
<?php
$string = 'Ruchika < ruchika@example.com >';
$pattern = '/[a-z0-9_\-\+\.]+@[a-z0-9\-]+\.([a-z]{2,4})(?:\.[a-z]{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]);
?>
在此处观看演示
解析电子邮件地址是一项疯狂的工作,会导致非常复杂的正则表达式。例如,考虑使用此官方正则表达式来捕获电子邮件地址:http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
太神奇了吧?
相反,有一个标准的php函数可以做到这一点,并在这里调用和记录。mailparse_rfc822_parse_addresses()
它采用字符串作为参数,并返回一个关联数组,其中包含键显示、地址和is_group。
所以
$to = 'Wez Furlong <wez@example.com>, doe@example.com';
var_dump(mailparse_rfc822_parse_addresses($to));
将产生:
array(2) {
[0]=>
array(3) {
["display"]=>
string(11) "Wez Furlong"
["address"]=>
string(15) "wez@example.com"
["is_group"]=>
bool(false)
}
[1]=>
array(3) {
["display"]=>
string(15) "doe@example.com"
["address"]=>
string(15) "doe@example.com"
["is_group"]=>
bool(false)
}
}