簡體   English   中英

提取兩個字符之間的字符串

[英]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)
  }
}

另請參閱: imap_rfc822_parse_adrlist()帶有效電子郵件的全名

使用像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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM