【发布时间】:2012-05-28 15:05:02
【问题描述】:
我正在解析邮件标头,并且正在寻找“boundary=...”参数。
$content = '..Content-Type: multipart/alternative;
boundary="----=_NextPart_000_10CD_01CD3CB2.7C22E7C0"
X-Mailer: Microsoft CDO for Windows 2000..'
我正在使用以下方法,但它们都不起作用:
$boundary = preg_replace('#(.*)boundary="(.*)"(.*)#is',"$2",$content);
$boundary = preg_replace('#boundary="(.*)"#i',"$2",$content);
第一行返回:
NextPart_000_10CD_01CD3CB2.7C22E7C0"
X-Mailer: Microsoft CDO for Windows 2000
而第二个:
Content-Type: multipart/alternative;
----=_NextPart_000_10CD_01CD3CB2.7C22E7C0
X-Mailer: Microsoft CDO for Windows 2000
我了解第二行的作用,并且它正确地做到了。但是当第一行不解析第二个双引号时,我不明白。有什么想法吗?
【问题讨论】:
-
您到底想做什么,使用 preg_match 匹配还是使用 preg_replace 替换?你把它弄混了。
-
我并没有真正使用它来替换,而是我猜想是为了匹配
-
你的问题真的让我意识到我必须使用 preg_match,我的错:preg_match('#boundary="(.*)"#i',$content,$m);
-
那么究竟是什么在这里不起作用?它似乎匹配得很好
-
您是否已经考虑过使用现有的库(例如 Mailparse)来执行此操作?