1

私はimap_header完全なヘッダーimap_fetch_overviewを抽出し、生のヘッダーを抽出するためにphp imap関数を使用しています。どちらの関数も、それぞれ stdClass オブジェクトと配列を提供します。

さらに処理する前に、常に from と to をクリーンアップしたいと思います。FROM または TO には、次のようなものが含まれる場合があります。 Test user <test@test.com>

また、現在FROMには、Test Userfirebugを使用するまでメールアドレスしか表示されず、表示されません。

これらのオブジェクト、配列から test@test.com を取得するにはどうすればよいですか?

これは私が得た結果ですimap_fetch_overview

   Array
   (
     [0] => stdClass Object
     (
        [subject] => Testing
        [from] => Test User 
        [to] => testuser2@test.com
        [date] => Wed, 17 Apr 2013 18:43:46 +0530
        [message_id] => <abcdef1244.93784jgsfk@test.com>
        [size] => 3443
        [uid] => 1234
        [msgno] => 123
        [recent] => 0
        [flagged] => 0
        [answered] => 0
        [deleted] => 0
        [seen] => 0
        [draft] => 0
        [udate] => 1366204439
    )

)

<test@test.com>Test User の横に隠しが​​あります。そのメールアドレスを抽出するにはどうすればよいですか?

同様に、これは私が得るものですimap_header

  stdClass Object
  (
     [date] => Wed, 17 Apr 2013 18:43:46 +0530
     [Date] => Wed, 17 Apr 2013 18:43:46 +0530
     [subject] => Test
     [Subject] => Test
     [message_id] => <abcdef1244.93784jgsfk@test.com>
     [toaddress] => testuser@test.com
     [to] => Array
     (
        [0] => stdClass Object
            (
                [mailbox] => testuser
                [host] => test.com
            )

    )

    [fromaddress] => Test User 
    [from] => Array
    (
        [0] => stdClass Object
            (
                [personal] => Test User
                [mailbox] => test
                [host] => test.com
            )

    )

    [reply_toaddress] => Test User 
    [reply_to] => Array
    (
        [0] => stdClass Object
            (
                [personal] => Test User
                [mailbox] => test
                [host] => test.com
            )

    )

    [senderaddress] => Test User
    [sender] => Array
    (
        [0] => stdClass Object
            (
                [personal] => Test User
                [mailbox] => test
                [host] => test.com
            )

    )

    [Recent] =>  
    [Unseen] => U
    [Flagged] =>  
    [Answered] =>  
    [Deleted] =>  
    [Draft] =>  
    [Msgno] =>  123
    [MailDate] => 17-Apr-2013 13:13:59 +0000
    [Size] => 3443
    [udate] => 1366204439
)

Apreg_matchは明らかな答えですが、電子メールアドレスがブラウザに表示されないが、firebugで検査すると存在するビットからそれを実行する方法を理解できないようです。どんな助けでも大歓迎です。

ありがとう。

4

3 に答える 3

2

imap_rfc822_parse_adrlist()Docsを使用すると、さらに一歩進めることができます。

$toAddresses = imap_rfc822_parse_adrlist('Test user <test@test.com>', 'localhost');

print_r($toAddresses);

Array
(
    [0] => stdClass Object
        (
            [mailbox] => test
            [host] => test.com
            [personal] => Test user
        )

)
于 2013-04-18T13:20:05.560 に答える
0

std オブジェクトの配列の名前が $arr の場合

$arr[0]->to

あなたが望むものを返します。

2番目の場合

$stdObject <- 2 番目の関数によって返されるオブジェクト

foreach($stdObject->to as $to)
{
 echo $to->mailbox;
 echo $to->host;
}
于 2013-04-18T13:17:43.093 に答える