2013-06-12 67 views
0

我需要從IMAP消息中提取URL,到目前爲止,我已經能夠以純文本格式提取消息,但沒有鏈接,我真的可以在這裏使用一些幫助。這是我走到這一步,從IMAP消息中提取鏈接

$section = empty($attachments) ? 1 : 1.2; 
$text  = imap_fetchbody($connection, $msgno, $section); 

echo $text."<hr/>"; 

我試着從1變截面數:1.1至1:1.2,但它並沒有幫助。

我需要提取郵件爲html,因此它包含鏈接,我需要更改以獲取鏈接?

+0

是'$ text'變量的內部鏈接。請發表一個你正在看到的迴應的例子。如果你不想從消息中的鏈接獲取URL,那麼它可能與'pref_match()'一樣簡單,並帶有'a href =「neededURL」'的表達式,然後編輯你的問題以澄清 – amaster

回答

0

在上面的代碼一些錯誤:

  • 使用1.2作爲一個浮點數而不是字符串。這是一個字符串,只是運氣不好,您的1.2沒有被轉換爲1.2000000001
  • 有萬一郵件帶有多個身體部位的硬編碼編號 - 在RFC 3501, p. 56關於這些身體部位,它們是如何工作,如何找出哪些是與您有關
  • 閱讀說明的細節不執行任何Content-Transfer-Encoding的解碼或處理字符集轉換。您顯然對消息的文本部分感興趣,可以使用quoted-printablebase64等多種編碼,您必須對這些編碼進行解碼。如果你想安全地玩這個遊戲(你應該已經在2013年了,網址中有一些有趣的角色,而不是關於IDN),也可以將它們從charset轉換爲unicode,然後才能匹配內容。
  • 你或許應該檢查的MIME類型至少所有頂級的身體部位,使你不嘗試檢測所連接的圖像或未解碼的zip文件二進制representaiton內「三通」等