3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32

Разбить текст на блоки

09.04.2019, 15:51. Показов 2581. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Есть один цельный текстовый файл с письмами типа

PHP
1
2
3
4
5
6
7
8
9
From ...
Return-Path: ...
To: ...
.....
 
From ...
Return-Path: ...
To: ...
.....
Хочу получить что типа

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Array [
 [
  From ...,
  Return-Path: ...,
  To: ...,
  содержание письма,
 ],
 [
  From ...,
  Return-Path: ...,
  To: ...,
  содержание письма,
 ]
]
пробую с
PHP
1
$email = explode('From', $emails);
или просто разбить на строки от From до From. Проблема в том что письме может попасться From. При использование explode From не попадает в строку с остальными полями. Конец письма тоже сложно определить, потому что могут быть пересланные письма и т.д.

Помогите пожалуйста.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.04.2019, 15:51
Ответы с готовыми решениями:

Как разбить текст на блоки по 64 бита?
просто разбиваем на куски по 4 символа?

Разбить строку на блоки, а затем эти блоки на отдельные слова
...доброго времени суток, уважаемые форумчане! Возникла задача - разбить строку на блоки, а затем эти блоки на отдельные слова. Не могу...

Разбить матрицу на блоки
3дравствуйте, дана матрица размерностью 1200 на 1200, как разбить ее на блоки?

5
1137 / 685 / 412
Регистрация: 07.11.2015
Сообщений: 1,102
09.04.2019, 17:51
Лучший ответ Сообщение было отмечено Bvdvv как решение

Решение

PHP
1
2
preg_match_all('~^(From.+)\n(Return-Path:.+)\n(To:.+)\n(?s)(.*?)(?=^From|\Z)~m', $text, $matches, PREG_SET_ORDER);
print_r($matches);
1
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
09.04.2019, 21:07
Bvdvv,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$str = 'From ...
Return-Path: ...
To: ...
содержимое письма 1
   
From ...
Return-Path: ...
To: ...
содержимое письма 2';
 
$blocks = array_map('trim', preg_split('~^(?=\s+)~m', $str));
 
var_dump( $blocks );
1
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
12.04.2019, 00:35  [ТС]
preg_match_all('~^(From.+)\n(Return-Path:.+)\n(To:.+)\n(?s)(.*?)(?=^From|\Z) ~m', $text, $matches, PREG_SET_ORDER);
print_r($matches);
Спасибо, почти то что нужно. Как научится такие рег. выр. составлять?

Добавлено через 5 минут
$blocks = array_map('trim', preg_split('~^(?=\s+)~m', $str));
Это больше подходит для разбивания текста на строки, как мне поазалось.
0
 Аватар для Строитель
1084 / 746 / 364
Регистрация: 09.07.2018
Сообщений: 1,760
12.04.2019, 08:37
Цитата Сообщение от Bvdvv Посмотреть сообщение
Это больше подходит для разбивания текста на строки, как мне поазалось.
На блоки строк, точнее говоря:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
/*
array (
  0 => 'From ...
        Return-Path: ...
        To: ...
        содержимое письма 1',
  1 => 'From ...
        Return-Path: ...
        To: ...
        содержимое письма 2',
)
*/
Цитата Сообщение от Bvdvv Посмотреть сообщение
Как научится такие рег. выр. составлять?
Прочитайте вдумчиво книгу "Регулярные выражения" Джеффри Фридла.
1
74 / 29 / 4
Регистрация: 16.10.2017
Сообщений: 95
14.04.2019, 10:00
Цитата Сообщение от VNIIAEN Посмотреть сообщение
На блоки строк, точнее говоря:
По пустой строке в тексте, а если в письме пустые строки то разобьет и письмо,
и у ТС пример массива с массивами частей письма.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.04.2019, 10:00
Помогаю со студенческими работами здесь

Разбить картинку на блоки
Всем привет.Прошу помощи.Подскажите алгоритм. Мне нужно загрузить картинку и разбить её на блоки (по цвету) должно работать примерно по...

Не могу разбить макет на блоки
В общем, мне дали задание: Нужно сверстать макет страницы информацио*нного портала. http://www.robonet.ru/usr/shared/album/album.jpg...

Как разбить изображение на блоки
Доброго времени суток! К примеру, у меня есть изображение размером 200х200,подскажите как мне его разбить на блоки 8х8?:(

Разбить изображение на блоки 32х32
Здравствуйте! Есть ли какая-нибудь функция, чтобы разбить изображение на блоки 32х32? Например, у меня изображение 1000х900 пикселей....

Хочу разбить сайт на блоки
Всем привет, проблема такая: 2 файла. В первом index.php <?php include "blocks/leftblock.php"; ?> Во втором leftblock.php ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru