2010-09-16 47 views
1

我通過電子郵件收到有人提交的表單,該表單位於我付費宣傳的網站上。使用PHP,我可以訪問我的電子郵件帳戶(IMAP),獲取和閱讀郵件,但是我無法從郵件正文中提取某些信息。我可以爆炸(\ n)正文,但無法弄清楚如何提取所需的信息來填充我的MYSQL插入函數中的變量。如何在字符串中查找變量?

使用爆炸()顯示結果後看起來是這樣的:

主題:: ADVERTISINGDOMAIN.COM - RSVP開放日查詢 - 清單#839027
爲:: [email protected]
ToName ::馬修
從:: [email protected]
FROMNAME :: XYZ信息

RSVP開放參觀

上市#:8390279
開放參觀日期:2010年9月3日
名稱:李四
電話:5555555555
電子郵件:[email protected]
點評:你好。我將在開放的房子......期待着與您見面並觀看這個屬性。謝謝。簡

+5

馬修 - 你能澄清一下你在找什麼嗎? – Rudu 2010-09-16 19:09:38

+0

你有沒有使用正則表達式? – 2010-09-16 19:12:55

回答

0

如果使用使preg_split您可以通過分割你的數據:+和各部分進行

$str = <<<END 
Subjects :: ADVERTISINGDOMAIN.COM - RSVP Open House Inquiry - Listing #839027 
To :: [email protected] 
ToName :: Matthew 
From :: [email protected] 
FromName :: XYZ Leads 

RSVP for Open House 

Listing #: 8390279 
Open House Date: Sep 3, 2010 
Name: John Doe 
Phone: 5555555555 
Email: [email protected] 
Comments: Hi. I will be at the open house...looking forward to meeting you and viewing this property. Thanks. Jane 
END; 

$parts = explode("\n", $str); 

foreach($parts as $part) { 
    // split by :+ and unlimited spaces 
    $data = preg_split('~[:]+\s*~', trim($part), null, PREG_SPLIT_NO_EMPTY); 
    if (count($data)) { 
     $final_data[] = $data; 
    } 

} 
print_r($final_data); 

結果...

Array 
(
    [0] => Array 
     (
      [0] => Subjects 
      [1] => ADVERTISINGDOMAIN.COM - RSVP Open House Inquiry - Listing #839027 
     ) 

    [1] => Array 
     (
      [0] => To 
      [1] => [email protected] 
     ) 

    [2] => Array 
     (
      [0] => ToName 
      [1] => Matthew 
     ) 
... 

現在,如果您遍歷數組必須分開每個數組的位置0的「變量名」和位置1的變量數據。如果他們不直接與表字段對齊,則可以創建一個將表單字段映射到表字段的數組。

+0

謝謝。使用preg_split我能夠得到以下內容。這可以工作嗎?我如何循環分配每個變量?這是我收到的輸出。 Array([0] => ADVERTISINGDOMAIN.COM - RSVP開放查詢 - 上市#839027 上市#[1] => 839027 開放日期[2] => 2010年9月3日 名稱[3] => John Doe 電子郵件[4] => [email protected] 電話[5] => 555555555 評論[6​​] =>嗨,我會在開放的房子裏......期待見到你並觀看這個屬性。謝謝。簡 – Matthew 2010-09-16 22:26:23

1

好吧,每個字符串中使用explode()再次用limit,你會得到這樣的字段:

$var = explode(':', 'Name: John Doe', 2); 

這會給你$var[0]包含的字段名稱爲Name$var[1]包含值作爲John Doe。現在爲每一行執行此操作,然後在查詢中使用這些值。

+0

不知道我關注。我最初的爆炸是: $ body_lines = explode(「\ n」,$ body); \t \t unset($ dataTxt); ($ body_lines as $ x => $ line){ $ body_lines。= htmlspecialchars($ line)。 「
\ n」; 那麼,現在我需要跟着這個? $ body_lines = explode(':',$ body_lines,2); – Matthew 2010-09-16 20:47:15

相關問題