我刚刚遇到 preg_match (这是一个谎言,我一直在避免它像瘟疫一样).. 现在我必须在我一直使用的库中修复一个表达式。
有问题的图书馆很繁荣,我已经检查过并且许可证是麻省理工学院,所以不用担心编辑源代码。我目前只使用 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 没有得到任何匹配,我得到了错误信息(如果文件夹 = '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)'
如果我不得不猜测是文件夹名称中的空格导致它失败,但这确实是一个猜测。
有人可以解释一下如何通过 preg_match 匹配字符串的“MESSAGES 528”部分吗?因为我认为这是我必须让课程成功工作的唯一问题。
任何帮助深表感谢。