如果我将电子邮件发送到PHP脚本,并使用fgets
遍历每一行,那么从From:
To:
和{{过滤掉值的最佳方法是什么? 1}}行?
我正在考虑在Subject:
处爆炸每一行,然后检查:
等等,但后来我爆炸了每一行,当时我应该只针对if ($result[0] === 'To')
,From
和To
在Google / SO搜索中,我找到Subject
,但您需要指定要搜索的字符数,这对于我想要的每个值都是不同的。
答案 0 :(得分:2)
有一个页面可以解析邮件标题 - 他们正在共享他们正在使用的正则表达式,所以也许你可以简单地获取你需要的部分:
http://mailheader.mattiasgeniar.be/headers.php
为您所需的字段建议的正则表达式是:
From |^from:(.*)|mi
To |^to:(.*)|mi
Subject |^subject:(.*)|mi
答案 1 :(得分:1)
$finds = array('Subject:', 'From:', 'To:');
$founds = array();
$line = fgets(...); // whatever your logic is to get each line
foreach($finds as $key => $find){
if (substr(trim($line), 0, strlen($find)) == $find){
$founds[] = array($find, $line);
}
}
print_r($founds); // you can explode (or whatever) the data as needed
这是未经测试的,我只是输入:)
答案 2 :(得分:1)
对于每个输入$line
:
$matches = array();
$params = array();
if (preg_match('/^Subject: (.*)/', $line, $matches) == 1) {
$params['subject'] = $matches[1];
} elseif (preg_match('/^From: (.*)/', $line, $matches) == 1) {
$params['from'] = $matches[1];
} elseif (preg_match('/^To: (.*)/', $line, $matches) == 1) {
$params['to'] = $matches[1];
}