Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32

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

09.04.2019, 15:51. Показов 2525. Ответов 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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru