私は preg_match に出くわしたばかりです (それは嘘です、ペストのようにそれを避けてきました)..そして今、私が使用しているライブラリの式を修正する必要があります.
問題のライブラリは繁栄しており、ライセンスが MIT であることを確認したので、ソースを編集する心配はありません。現在、fMailbox クラスのみを使用しており、クラスを編集して、別のフォルダーから電子メールを取得できるようにしています。オリジナルはこのために設計されたものではなく、次の構文があります。
$messages = $mailbox->listMessages($limit,$page);
$messages = $mailbox->listMessages(5,0); // for example - the first 5 emails in the inbox
今、私は得ることができるように編集しています:
$messages = $mailbox->listMessages($limit,$page = NULL, $sortorder, $folder);
他の誰かが同じ/類似の操作を行ったようで、$sortorder が機能しているようですが、フォルダを変更すると (たとえば、「[Google Mail]/Sent Items」に)、次の preg_match で一致が得られず、誤った情報 (folder = 'INBOX' の場合は正常に動作します);
if (preg_match('#^\s*\*\s+STATUS\s+"?'.$folder.'"?\s+\((.*)\)$#', $line, $match)) {}
// where $folder = '[Google Mail]/Sent Mail'
見るべき文字列 ($line) は次のとおりです: '* STATUS "[Google Mail]/Sent Mail" (MESSAGES 528)'
私が推測しなければならなかったのは、フォルダー名のスペースが失敗の原因であると推測しましたが、それは本当に推測です。
文字列の 'MESSAGES 528' 部分を preg_match で一致させる方法を誰かが親切に説明してくれませんか? これは、クラスを正常に機能させるために必要な唯一の問題だと思います。
どんな助けでも大歓迎です。