PHP regex - получает имя хоста из строки текстового блока - PullRequest
1 голос
/ 03 апреля 2011

У меня есть переменная в PHP, которая содержит большой текст (точнее, заголовок электронной почты).

Я хочу извлечь из этого заголовка две вещи.Вот пример заголовка:

Received: by mozg.ha.domain.net (Postfix, from userid 0)
    id E714C9AEDE; Tue, 29 Mar 2011 10:22:42 +0200 (CEST)
Subject: This is some text before hs34940.somedomain.tld
X-internal-Template: mozg/de/shipping.model

Теперь из этого текста я хочу получить 2 переменные.Одна содержит hs34940.somedomain.tld , а другая - 4 последние цифры номера, в данном случае 4940 .Длина цифр является переменной.

Я получил это в настоящее время в переменной $ header, и я бы хотел получить из него $ number и $ name.

Любая помощьс благодарностью.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2011

Я не эксперт по регулярным выражениям, но это может помочь.

preg_match('/\d{4}\.somedomain.tld.*|\.somedomain1.tld.*/', $header, $arr);

$ arr [0] даст вам 4940.somedomain.tld

Я пробовал с этим инструментом

Тогда вы можете использовать substr или explode, чтобы получить номер и доменное имя

0 голосов
/ 03 апреля 2011

Ну вот простой подход, используйте регулярные выражения одно, чтобы получить эту строку:

Subject: This is some text before hs34940.somedomain.tld

Еще один в первом совпадении, чтобы получить: hs34940.somedomain.tld

А для числа просто используйте substr, если количество цифр фиксировано.

Полезный API:

Preg_match ($ pattern, $ match, $ result) - для сопоставления шаблонов с текстом.

substr ($ start_indes, $ finish_index, $ string) - чтобы получить определенную часть строки.


Для заголовка темы: preg_match('/Subject: [a-zA-Z0-9. ]*/', $header, $headline); Для домена: preg_match('/[a-z0-9]*[.][a-z0-9]*[.][a-z]*/', $headline[0],$domain);

Это не слишком общее, но для вашего случая будет работать просто отлично.

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