请问你如何在php中做到这一点......
如何只获得 test@gmail.com ...
Username <testmail@gmail.com>
到
testmail@gmail.com
用户名和&lt;&gt;被删除...
答案 0 :(得分:1)
根据您的要求,您可以使用substr
功能,如下所示:
$string = 'Username <testmail@gmail.com>';
$opening = strpos($string, '<')+1;
$closing = strpos($string, '>');
echo substr($string, $opening, $closing-$opening);
希望这有帮助。
答案 1 :(得分:0)
电子邮件地址实际上已经退出复杂的野兽。
如果主题文字没什么特别的话,你可以保持简单。
简单方法
\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}\b
根据RFC 2822发送电子邮件地址
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
此正则表达式实现了电子邮件地址的官方RFC 2822标准。不建议在实际应用程序中使用此正则表达式。它表明,使用正则表达式总是在精确和实际之间进行权衡。
注意这两个正则表达式都来自RegexBuddy库
答案 2 :(得分:0)
没有通常预防措施的一种快捷方法是使用以下功能:
function _stringExtractEmail( $x ) {
return( substr( $x , strpos( $x , '<' ) + 1 , -1 ) ) ;
}
// Example
print( _stringExtractEmail( 'Zafar Iqbal <mail@zaf.io>' ) ) ;
注意substr函数中的'-1',它只是砍掉最后一个字符,无论它是什么。