[英]Extract a string between two characters
我有一个输出字符串,格式为Fname Lname<fname@urmail.com>
。 我想从这里提取电子邮件。 我怎样才能做到这一点?
如果您可以确定字符串格式是一致的,那么一个简单的正则表达式就可以解决这个问题:
$input = 'Fname Lname<fname@urmail.com>';
preg_match('~<(.*?)>~', $input, $output);
$email = $output[1];
不要重新发明轮子。 相反,使用解析器。 mailparse_rfc822_parse_addresses()
是专业人士为此特定任务制作的,他们对该主题有深入的了解(以及您可能遇到的可能的怪癖)。
来自文档的示例#1:
$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)
}
}
使用像substring和explode这样的函数(比正则表达式更简单的方法,并且可以做到这一点):
<?php
$text = 'Fname Lname<fname@urmail.com>';
$pieces = explode('<',$text);
$mail=substr($pieces[1],0,-1);
echo $mail;
?>
这应该打印电子邮件地址:
if (preg_match("/<\S*>/", $subject, $matches)) {
echo "E-Mail address: ".$matches[0];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.