我需要将电子邮件Content-Type: text/plain; charset="UTF-8"
的内容转换为变量并将其存储在数据库中,以便可以检索它们并将其输出到表/图形中。
我正在使用Laravel。
我正在将Laravel5.8与https://github.com/Webklex/laravel-imap一起使用来处理主题/收件人在数据库中的存储。
因此,我需要能够从标题获取信息,并在变量中显示下表,例如:
$location = "UNIT 1 PERCH 1";
$subLoc = "House 1, Pen 1;
$age = "3 DAYS";
我已经设法将完整的电子邮件存储在数据库中,但是如果我无法操纵文本,那将毫无意义。
示例电子邮件:
123 ADDRESS
THE ADDRESS
BW8010 2.55 UNIT 1
Logged 07 JUN 14 23:59
SUMMARY REPORT
----UNIT 1 PERCH 1-----
House 1, Pen 1
Age DAYS 3
Total 3991
Average GMS 61
Deviation GMS 16
Evenness % 22
C.V. % 21.1
Daily gain GMS 1
----UNIT 1 PERCH 2-----
House 1, Pen 2
Age DAYS 2
Total 3123
Average GMS 74
Deviation GMS 16
Evenness % 12
C.V. % 34
Daily gain GMS 2
答案 0 :(得分:0)
我还没有测试过。但是一般的想法是,您可以拥有一个数组,其中包含您希望从电子邮件中获取的所有变量名。然后阅读电子邮件,并在每行循环中查看数组是否包含所需变量的名称。如果确实如此,则将行保存到数据库。可能有多种方法可以使此过程更有效。
<?php
$variableNames = array("Location", "Age"); //Array of variable names to get
$email = fopen($fileName, "r") or die("Unable to open email");
//For each line of the email
while(!feof($email ))
{
$line = fget($email); //Get the current line
for($i = 0; $i < sizeOf($variableNames); $i++){ //Loop through the variables array
if(stristr($line, $variableNames[$i])){ //if the line contains the name of a desired variable
//Add $line to database...
}
}
}
fclose($email );
?>
答案 1 :(得分:0)
使用regex
,您可以获得location
,subLoc
和age
数据(邮件模板必须在上面)。我刚刚抢到了第一场比赛,如果您需要所有比赛,则可以使用foreach()
来获取所有发生的事件,
<?php
$re = '/----(.*)-----
(.*)
Age (?:DAYS (\d+))/m';
$str = ' 123 ADDRESS
THE ADDRESS
BW8010 2.55 UNIT 1
Logged 07 JUN 14 23:59
SUMMARY REPORT
----UNIT 1 PERCH 1-----
House 1, Pen 1
Age DAYS 3
Total 3991
Average GMS 61
Deviation GMS 16
Evenness % 22
C.V. % 21.1
Daily gain GMS 1
----UNIT 1 PERCH 2-----
House 1, Pen 2
Age DAYS 2
Total 3123
Average GMS 74
Deviation GMS 16
Evenness % 12
C.V. % 34
Daily gain GMS 2';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
$keys = ['location','subLoc','age'];
$values= [$matches[0][1],$matches[0][2],$matches[0][3]];
$result = array_combine($keys,$values);
extract($result);
echo "\$location = $location; \$subLoc = $subLoc; \$c = $subLoc;";
?>
输出:
$location = UNIT 1 PERCH 1; $subLoc = House 1, Pen 1; $c = 3;
工作演示: https://3v4l.org/HiEqI