PHP 8.4.1 Released!

imap_sort

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_sortLiefert und sortiert Nachrichten eines Postfachs

Beschreibung

imap_sort(
    IMAP\Connection $imap,
    int $criteria,
    bool $reverse,
    int $flags = 0,
    ?string $search_criteria = null,
    ?string $charset = null
): array|false

Gibt eine gemäß den angegebenen Sortierkriterien sortierte Liste von Nachrichtennummern zurück.

Parameter-Liste

imap

Eine IMAP\Connection-Instanz.

criteria

Nur eines der folgenden Sortierkriterien:

reverse

Sortierung in umgekehrter Reihenfolge, wenn true

flags

Der Parameter flags enthält eine Bitmaske mit einem oder mehreren der folgenden Werte:

  • SE_UID - es werden UIDs anstelle von Nachrichtennummern zurückgegeben
  • SE_NOPREFETCH - Nachrichten werden nicht auf Vorrat abgerufen

search_criteria

Ein String mit Suchkriterien im IMAP2-Format. Details können imap_search() entnommen werden.

charset

Der zum Sortieren von Strings zu verwendende MIME-Zeichensatz.

Rückgabewerte

Gibt ein Array mit Nachrichtennummern zurück, die nach den angegebenen Sortierkriterien sortiert sind. Bei einem Fehler wird false zurückgegeben.

Changelog

Version Beschreibung
8.1.0 Der Parameter imap erwartet nun eine IMAP\Connection-Instanz; vorher wurde eine gültige imap-Ressource erwartet.
8.0.0 reverse ist nun vom Typ bool statt int.
8.0.0 search_criteria und charset sind nun nullable (akzeptieren den (null-Wert).
add a note

User Contributed Notes 1 note

up
9
antoine dot spam-nono at maxg dot info
18 years ago
I worked a lot with IMAP functions since I wrote a complete webmail and I've got a little tip about the imap_sort function :

There is a big difference between :

<?php
imap_sort
($imap, SORTDATE, 1);
// and
imap_sort($imap, SORTARRIVAL, 1);
?>

The first command will issue a
>> FETCH 1:last (UID ENVELOPE BODY.PEEK[HEADER.FIELDS (Newsgroups Content-MD5 Content-Disposition Content-Language Content-Location Followup-To References)] INTERNALDATE RFC822.SIZE FLAGS)

While the second resulted in
>> FETCH 1:last (UID INTERNALDATE RFC822.SIZE FLAGS)

As a result, using SORTDATE took 3 seconds longer to complete on a 800-emails mailbox, while the results are quite the same (except if you have to deal with forged dates or timezones, but the arrival order is far more logical)

My advice if you sort your emails by arrival is to actually use SORTARRIVAL, or better don't use imap_sort and go straight with message numbers (not UIDs). On large mailboxes, if you display messages per page, you will have significant performance increases (by avoiding 5 seconds of sorting).
To Top