2011-09-12 121 views

回答

10

如果你能確保該字符串格式是一致的,一個簡單的正則表達式會做的伎倆:

$input = 'Fname Lname<[email protected]>'; 
preg_match('~<(.*?)>~', $input, $output); 
$email = $output[1]; 
+0

var_dump($ output)results array(0){} – AssamGuy

1

使用功能,如字符串和爆炸(比正則表達式更簡單的方法,並會做的伎倆) :

<?php 
$text = 'Fname Lname<[email protected]>'; 
$pieces = explode('<',$text); 
$mail=substr($pieces[1],0,-1); 
echo $mail; 
?> 
0

這應該打印E-mail地址:

if (preg_match("/<\S*>/", $subject, $matches)) { 
    echo "E-Mail address: ".$matches[0]; 
} 
3

不要重新發明輪子。相反,使用解析器。 mailparse_rfc822_parse_addresses()是由具有深入知識的專業人士(以及您可能遇到的可能遇到的可能的怪癖)的專業人員爲此特定任務而製作的。

實施例#1從文檔:

$to = 'Wez Furlong <[email protected]>, [email protected]'; 
var_dump(mailparse_rfc822_parse_addresses($to)); 

給出(施加溫和格式化):

array(2) { 
    [0] => array(3) { 
    ["display"] => string(11) "Wez Furlong" 
    ["address"] => string(15) "[email protected]" 
    ["is_group"] => bool(false) 
    } 
    [1] => array(3) { 
    ["display"] => string(15) "[email protected]" 
    ["address"] => string(15) "[email protected]" 
    ["is_group"] => bool(false) 
    } 
} 

也參見:imap_rfc822_parse_adrlist()Full name with valid email

+0

請注意,mailparse是不與PHP捆綁在一起的PECL擴展。否則,這是做到這一點的正確方法。 –

+0

@Tatu Ulmanen True。 'php-imap'擴展名可能存在,參見更新的答案。 – jensgram

相關問題