0

私はこの絶対に素晴らしいコードを使用しています:https ://github.com/plancake/official-library-php-email-parser/blob/master/PlancakeEmailParser.php

ただし、不足しているのは、差出人の電子メールアドレスを取得する機能です。

私は簡単に追加しました:

public function getFromEmail()
{
    if (!isset($this->rawFields['from']))
    {
        return false;
    }

    return $this->rawFields['from'];
}

しかし、返される瞬間に電子メールアドレスの部分だけを取得するにはどうすればよいJohn Smith<john@gmail.com>ですか?

また、差出人アドレスが唯一の場合、これが機能する必要がありjohn@gmail.comますか?

答えのおかげで、これは完成したコードでした:

public function getFromEmail()
{
    $email = trim($this->rawFields['from']);

    if(substr($email, -1) == '>'){
        $fromarr = explode("<",$email);
        $mailarr1 = explode(">",$fromarr[1]);
        $email = $mailarr1[0];
    }

    return $email;
}
4

2 に答える 2

2

これは非常に単純な正規表現です。

$output = array();
preg_match("/.*<(.*?)>.*?/", $this->rawFields['from'], $output);
$email_address = $output[1];

ただし、誰かの名前に < または > が含まれていると、セキュリティ上の脆弱性が生じる可能性があります。遅延演算子 (*.?) を使用して、最後のセットの < > が確実に使用されるようにします。

HTH

PS:正規表現をテストするには、http: //gskinner.com/RegExr/を使用してください。

于 2012-12-03T14:09:54.987 に答える
0
$mailid='John Smith<john@gmail.com>';
$mailarr=explode("<",$mailid);
$mailarr1=explode(">",$mailarr[1]);
$just_emailid=$mailarr1[0];
于 2012-12-03T14:05:23.960 に答える