Можете ли вы использовать условные выражения в IMAP_SEARCH из библиотеки PHP IMAP? - PullRequest
0 голосов
/ 10 марта 2011

Я не смог ничего найти при изучении кода и поиске документации.Кто-нибудь смог этого добиться?

http://php.net/manual/en/function.imap-search.php

1 Ответ

6 голосов
/ 10 марта 2011

Нет, вы не можете. (Трудно поверить, правда?)

PHP использует библиотеку c-client Марка Криспина для работы с IMAP. В библиотеке c-client есть устаревший метод mail_criteria в mail.c, который переводит строку поиска IMAP в программу поиска c-client. mail_criteria устарел в течение последних 8 лет или около того и поэтому никогда не обновлялся для поддержки синтаксиса поиска IMAP4 . Поэтому поисковые термины, такие как OR, которых не было в IMAP2, никогда не получали поддержки в функции mail_criteria. Вот все термины, которые он поддерживает, начиная с 'O':

  case 'O':                 /* possible OLD, ON */
    if (!strcmp (criterion+1,"LD")) f = pgm->old = T;
    else if (!strcmp (criterion+1,"N"))
      f = mail_criteria_date (&pgm->on,&r);
    break;

OR нет в этом списке. Таким образом, хотя c-клиент поддерживает OR в его структурах SEARCHPGM, он не анализирует OR в устаревшей функции mail_criteria.

И PHP по-прежнему использует mail_criteria для анализа поисковых запросов . В 2011 году. Таким образом, пока либо библиотека c-client не устареет mail_criteria и не сделает ее совместимой с IMAP4, либо PHP не создаст собственный анализатор поиска IMAP, вы будете зависеть от того, что поддерживает IMAP2. Что не включает OR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...