我有以下消息,我试图从电子邮件正文中进行解析。我能够成功获取电子邮件正文,但是遇到从中提取特定值的问题。这是邮件正文的示例:
John Doe刚刚请求服务。请参阅以下详细信息:名称:John Doe 编号:8848442222 电子邮件:john@doe.com
我希望能够回应以下每个方面: 约翰·杜 8884442222 John@doe.com 123 Main St
一旦我分别拥有它们,我想发送一个包含数据的POST。我可以处理POST部分。
这是我当前正在做的事情:
$message = imap_fetchbody($connection,$email_number,1.1);
if ($message == "") { // no attachments is the usual cause of this
$message = imap_fetchbody($connection, $email_number, 1);
$name = explode("Name:", $message);
$wholename = $name[1];
$nameExp = explode("/[\s]+/Number:", $wholename);
$number = explode("Number:", $message);
$nameFinal = $nameExp[0];
$wholenumber = $number[1];
}
//split the header array into variables
$status = ($header[0]->seen ? 'read' : 'unread');
$subject = $header[0]->subject;
$from = $header[0]->from;
$date = $header[0]->date;
echo "Whole name: " . $wholename . "<br>";
echo "Final name: " . $nameFinal . "<br>";
echo "whole number: " . $wholenumber . "<br>";
当我回声全名时,我会在“名称:”(应该发生的情况)之后获取所有信息,与数字相同,但是当我尝试获取finalName时,它什么也不返回。我想念什么?
答案 0 :(得分:4)
只需使用纯正则表达式进行操作,即可访问特定的组:
Name:(.+) Number: (\d+) Email:(.+) Address: (.+) Type of Property:
这仅在电子邮件始终采用相同格式时才有效-“财产类型”后也缺少分组,但我不知道您在那写什么-希望您能明白。
使用https://regex101.com/来帮助自己。