imap_search

This function returns an array of messages matching the given search criteria

&reftitle.description; ``array``false```imap_search` `IMAP\Connection` `imap` `string` `criteria` `int` `flags` `SE_FREE` `string` `charset`""

This function performs a search on the mailbox currently opened in the given IMAP stream.

For example, to match all unanswered messages sent by Mom, you'd use: "UNANSWERED FROM mom". Searches appear to be case insensitive. This list of criteria is from a reading of the UW c-client source code and may be incomplete or inaccurate (see also RFC1176, section "tag SEARCH search_criteria").

&reftitle.parameters;

&imap.imap-parameter.imap;

`criteria`

- A string, delimited by spaces, in which the following keywords are allowed. Any multi-word arguments (e.g. `FROM "joey smith"`) must be quoted. Results will match all `criteria` entries.

  - ALL - return all messages matching the rest of the criteria

  - ANSWERED - match messages with the \\ANSWERED flag set

  - BCC "string" - match messages with "string" in the Bcc: field

  - BEFORE "date" - match messages with Date: before "date"

  - BODY "string" - match messages with "string" in the body of the message

  - CC "string" - match messages with "string" in the Cc: field

  - DELETED - match deleted messages

  - FLAGGED - match messages with the \\FLAGGED (sometimes referred to as Important or Urgent) flag set

  - FROM "string" - match messages with "string" in the From: field

  - KEYWORD "string" - match messages with "string" as a keyword

  - NEW - match new messages

  - OLD - match old messages

  - ON "date" - match messages with Date: matching "date"

  - RECENT - match messages with the \\RECENT flag set

  - SEEN - match messages that have been read (the \\SEEN flag is set)

  - SINCE "date" - match messages with Date: after "date"

  - SUBJECT "string" - match messages with "string" in the Subject:

  - TEXT "string" - match messages with text "string"

  - TO "string" - match messages with "string" in the To:

  - UNANSWERED - match messages that have not been answered

  - UNDELETED - match messages that are not deleted

  - UNFLAGGED - match messages that are not flagged

  - UNKEYWORD "string" - match messages that do not have the keyword "string"

  - UNSEEN - match messages which have not been read yet

`flags`

- Valid values for `flags` are `SE_UID`, which causes the returned array to contain UIDs instead of messages sequence numbers.

`charset`

- MIME character set to use when searching strings.

&reftitle.returnvalues;

Returns an array of message numbers or UIDs.

Return &false; if it does not understand the search `criteria` or no messages have been found.

&reftitle.changelog;

&Version; | &Description;
&imap.changelog.imap-param;

&reftitle.examples;

### `imap_search` example

    <?php
    $imap   = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'foo@example.com', 'pass123', OP_READONLY);

    $some   = imap_search($imap, 'SUBJECT "HOWTO be Awesome" SINCE "8 August 2008"', SE_UID);
    $msgnos = imap_search($imap, 'ALL');
    $uids   = imap_search($imap, 'ALL', SE_UID);

    print_r($some);
    print_r($msgnos);
    print_r($uids);
    ?>

&example.outputs.similar;

    Array
    (
        [0] => 4
        [1] => 6
        [2] => 11
    )
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 4
        [4] => 5
        [5] => 6
    )
    Array
    (
        [0] => 1
        [1] => 4
        [2] => 6
        [3] => 8
        [4] => 11
        [5] => 12
    )

&reftitle.seealso;

- `imap_listscan`