imap_search在php中没有使用多个条件

时间:2014-01-28 07:54:58

标签: php imap

我正在使用imap在php中进行webmail项目。 imap_search函数不适用于多个条件。在单一搜索条件中,它工作正常。 这是我的代码:

$boxes = imap_search($mbox, 'OR SUBJECT "'.$search_keyword.'" BODY "'.$search_keyword.'"', SE_UID);

5 个答案:

答案 0 :(得分:1)

感谢您的建议。我已经编写了一些基本条件的代码。现在工作正常。这是我的代码。

//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); 
    }
} 

答案 1 :(得分:1)

试试这段代码:

$emails = imap_search($inbox, 'TO "'.$email.'" SUBJECT "'.$search_text.'"',E_UID); 

答案 2 :(得分:0)

尝试这可能是

$SUBJECT = imap_search($mbox, 'SUBJECT "'.$search_keyword.'"', SE_UID);
$BODY = imap_search($mbox, 'SUBJECT "'.$search_keyword.'"', SE_UID);

$boxes = array_merge($SUBJECT, $BODY);

答案 3 :(得分:0)

我在Windows上使用PHP 5.5.12,并确认" OR"运算符不能使用函数Imap_search()。您需要对服务器进行多次查询才能获得所需的结果。

使用关键字" BODY"也可能值得一提。或" TEXT"搜索电子邮件正文也将使用Imap_search()匹配标题中的内容(例如FROM,TO,SUBJECT)。

答案 4 :(得分:0)

要使用array_mergearray_intersect,需要$SUBJECT$BODY来设置临时变量

$I = $SUBJECT;
$J = $BODY;

$boxes = array_merge($I,$J);