使用PHP Explode

时间:2019-02-13 13:47:33

标签: php

我有以下消息,我试图从电子邮件正文中进行解析。我能够成功获取电子邮件正文,但是遇到从中提取特定值的问题。这是邮件正文的示例:

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时,它什么也不返回。我想念什么?

1 个答案:

答案 0 :(得分:4)

只需使用纯正则表达式进行操作,即可访问特定的组:

Name:(.+) Number: (\d+) Email:(.+) Address: (.+) Type of Property:

这仅在电子邮件始终采用相同格式时才有效-“财产类型”后也缺少分组,但我不知道您在那写什么-希望您能明白。

使用https://regex101.com/来帮助自己。