Как мне найти переменные в строке? - PullRequest
1 голос
/ 16 сентября 2010

Я получаю запросы по электронной почте, когда кто-то отправляет форму, находящуюся на веб-сайте, на котором я плачу за рекламу.Используя PHP, я могу получить доступ к своей учетной записи электронной почты (IMAP), получать и читать сообщения, но у меня возникают проблемы с извлечением определенной информации из тела письма.Я могу разбить (\ n) тело, но не могу понять, как извлечь необходимую информацию для заполнения переменных в моей функции вставки MYSQL.

После использования explode () отображение результатов выглядит следующим образом:

Предметы :: ADVERTISINGDOMAIN.COM - Запрос открытых дверей RSVP - Объявление № 839027
To :: xyzleads@mydomainname.com
ToName :: Matthew
От :: adwebsite@advertisingdomain.com
FromName:: XYZ Leads

RSVP для Дня открытых дверей

Номер объявления: 8390279
Дата открытия дома: 3 сентября 2010
Имя: Джон Доу
Телефон:5555555555
E-mail: johndoe@domain.com
Комментарии: Привет.Я буду в открытом доме ... с нетерпением жду встречи с вами и просмотра этой собственности.Благодарю.Джейн

Ответы [ 2 ]

1 голос
/ 16 сентября 2010

Хорошо, используйте explode() еще раз для каждой строки с limit, и вы получите следующие поля:

$var = explode(':', 'Name: John Doe', 2);

Это даст вам $var[0], содержащее имя поля как Name и $var[1], содержащие значение John Doe.Теперь сделайте это для каждой строки, а затем используйте значения в вашем запросе.

0 голосов
/ 16 сентября 2010

если вы используете preg_split, вы можете разделить ваши данные с помощью: + и отделить каждую часть от

$str = <<<END
Subjects :: ADVERTISINGDOMAIN.COM - RSVP Open House Inquiry - Listing #839027
To :: xyzleads@mydomainname.com
ToName :: Matthew
From :: adwebsite@advertisingdomain.com
FromName :: XYZ Leads

RSVP for Open House

Listing #: 8390279
Open House Date: Sep 3, 2010
Name: John Doe
Phone: 5555555555
Email: johndoe@domain.com
Comments: Hi. I will be at the open house...looking forward to meeting you and viewing this property. Thanks. Jane
END;

$parts = explode( "\n", $str );

foreach( $parts as $part ) {
    // split by :+ and unlimited spaces
    $data = preg_split( '~[:]+\s*~', trim($part), null, PREG_SPLIT_NO_EMPTY );
    if ( count( $data ) ) {
        $final_data[] = $data;
    }

}
print_r($final_data);

результаты в ...

Array
(
    [0] => Array
        (
            [0] => Subjects 
            [1] => ADVERTISINGDOMAIN.COM - RSVP Open House Inquiry - Listing #839027
        )

    [1] => Array
        (
            [0] => To 
            [1] => xyzleads@mydomainname.com
        )

    [2] => Array
        (
            [0] => ToName 
            [1] => Matthew
        )
...

Теперь, если вы перебираете этот массив, у вас есть «имя переменной» в качестве позиции 0 каждого массива и данные переменных в позиции 1. Если они не совпадают напрямую с полями таблицы, вы можете создать массив, который сопоставляет поля формы с поля таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...