我正在用imap在php中進行webmail項目。 imap_search函數不適用於多個條件。在單一搜索條件下,它工作正常。 這是我的代碼:imap_search不能在php中使用多個條件工作
$boxes = imap_search($mbox, 'OR SUBJECT "'.$search_keyword.'" BODY "'.$search_keyword.'"', SE_UID);
我正在用imap在php中進行webmail項目。 imap_search函數不適用於多個條件。在單一搜索條件下,它工作正常。 這是我的代碼:imap_search不能在php中使用多個條件工作
$boxes = imap_search($mbox, 'OR SUBJECT "'.$search_keyword.'" BODY "'.$search_keyword.'"', SE_UID);
嘗試,這可能是
$SUBJECT = imap_search($mbox, 'SUBJECT "'.$search_keyword.'"', SE_UID);
$BODY = imap_search($mbox, 'SUBJECT "'.$search_keyword.'"', SE_UID);
$boxes = array_merge($SUBJECT, $BODY);
它沒有工作。它沒有顯示消息。 –
你想'OR'查詢或'AND'查詢? – zzlalani
或只有...如果用戶在前端搜索任何單個關鍵字,我們將檢查郵件信息中的所有部分(如FROM,TO,SUBJECT,BODY),然後向他顯示過濾結果。 –
感謝您的建議。我已經寫了一些基本條件的代碼。現在它工作正常。這是我的代碼。
//for multiple search criteria starts here for concatenate
$boxes = imap_search($mbox, 'FROM "'.$search_keyword.'"', SE_UID);
//check if first search have mails or not
if($boxes)
{
if(imap_search($mbox, 'SUBJECT "'.$search_keyword.'"', SE_UID))
{
$boxes = $boxes + imap_search($mbox, 'SUBJECT "'.$search_keyword.'"', SE_UID);
}
else
{
$boxes = imap_search($mbox, 'SUBJECT "'.$search_keyword.'"', SE_UID);
}
}
我在Windows上使用PHP 5.5.12,並確認「OR」運算符不能與函數Imap_search()一起使用。您需要對服務器進行多個查詢才能獲得您想要的結果。
也許值得一提的是,使用關鍵詞「BODY」或「TEXT」來搜索電子郵件的主體也會使用Imap_search()匹配位於標題(例如FROM,TO,SUBJECT)中的內容。
試試這個代碼:
$emails = imap_search($inbox, 'TO "'.$email.'" SUBJECT "'.$search_text.'"',E_UID);
這看起來或多或少權(不考慮zzlalani說的話)。你能顯示實際的IMAP命令嗎?你有兩臺服務器測試過嗎?順便說一句,如果搜索詞包含「,\,ë或±等字符,你的代碼就會中斷。 – arnt
如果我在imap_search中使用」OR「關鍵字,它不會顯示任何結果。對於單個條件,它工作正常。參考,不工作哦,笏做的? –
直接嘗試使用IMAP,看看它是否有效。這樣你就可以知道問題出在客戶端代碼還是服務器代碼中。'telnet imap.example.com 143', 'a login username password','b select inbox','c uid search or subject'arnt'body'arnt''。如果這不起作用,這是一個服務器問題,如果它工作,你必須找出你的代碼生成以及爲什麼它不會生成正確的命令。玩得開心 – arnt