Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна регулярка, делящая текст на блоки 
:(
    Опции темы
Rooner
Дата 9.12.2012, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 21.8.2011

Репутация: нет
Всего: нет



Есть текст, разделенный блоками [тут текст и/или дата]
Нужно вытащить все даты из квадратных скобок и текст после скобок, результат поместить в массив.
Код

<p>[newpost 06.12.12]</p>
<p>Раз Раз Раз Раз Раз Раз</p>
[08.12.12 15:20:35]
<div class="err">Два Два Два Два Два Два Два Два</div>
<p>[newpost 10.12.12]</p>
<p>Три Три Три Три </p>

Хочется получить такой массив:
Код

[0][0]<p>06.12.12
   [1]<p>Раз Раз Раз Раз Раз Раз</p>

[1][0]08.12.12 15:20:35
   [1]<div class="err">Два Два Два Два Два Два Два Два</div>

[2][0]10.12.12
   [1]<p>Три Три Три Три </p>


В регулярках я плохо разбираюсь. У меня есть вот такая регулярка, она разбивает текст, но к сожалению не сохраняет текст после скобок, мб ее модернизировать...
Код

preg_match_all('/\[[^\[\]]+\]/', $sText, $rgMatches);


Это сообщение отредактировал(а) Rooner - 9.12.2012, 13:08
PM MAIL   Вверх
Evghenusi
Дата 9.12.2012, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 6
Всего: 15



мне самому не нравится то что предлагаю, но пока ничего умнее не придумал.
Код
/(\d{2}\.\d{2}\.\d{2}).+(?:\r|\n)(.+)$/m

посмотреть работу рв
PM WWW   Вверх
Rooner
Дата 9.12.2012, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 21.8.2011

Репутация: нет
Всего: нет



Evghenusi, я пробовал примерно такойже вариант, но всеже решил сделать так:
Код

    // находим даты
    preg_match_all('/[\d\.]+\s[\d\:]+/', $main, $dates);

    // разбиваем текст на блоки
    preg_match_all('/(<p>)?\[[^\[\]]*\](<\/p>)?/', $main, $rgMatches); // находим блоки со скобками
    $main = str_replace($rgMatches[0], '[flag]', $main); // заменяем их на [flag]
    $texts = explode('[flag]', $main);                   // делим текст и заносим в массив

Так вполне сойдет
PM MAIL   Вверх
Evghenusi
Дата 9.12.2012, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 6
Всего: 15



Цитата(Rooner @  9.12.2012,  17:34 Найти цитируемый пост)
Так вполне сойдет 
вам решать).

а я про время забыл((
/(\d{2}\.\d{2}\.\d{2}(?:\s\d+.\d+.\d+)?).+(?:\r|\n)(.+)$/m - страшненькая))
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0690 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.