Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Разобрать html на абзацы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
zero_real
Отправлено: 09 Ноября, 2014 - 15:53:40
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Доброго времени суток, All!

Как-то с регулярками особенно работать не приходилось, но тут возникла срочная задача.
В связис этим прошу помощи.

Есть код, вроде:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <p>текст1. внутри <strong>могут</strong> быть <i>разные</i> теги</p>
  3. <p>текст2. внутри <strong>могут</strong> быть <i>разные</i> теги</p>
  4. <p>текст3. внутри <strong>могут</strong> быть <i>разные</i> теги</p>  
  5. ...
  6.  

Задача разбить этот код в массимум по абзацам.
Т.е.:
нулевой элемент массива должен содежать "<p>текст1. внутри <strong>могут</strong> быть <i>разные</i> теги</p>", первый "<p>текст2. внутри <strong>могут</strong> быть <i>разные</i> теги</p>".

Количество абзацев может быть разным.

Как реализовать?

Спасибо!
 
 Top
dXdYdZ
Отправлено: 09 Ноября, 2014 - 17:37:06
Post Id


Посетитель


Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013  


Помог: 11 раз(а)




PHP:
скопировать код в буфер обмена
  1. $reg='#<p>(.+?)</p>#mi';
  2. preg_match_all($reg,$page,$matches);

Здесь $page-HTML-код,
$matches-массив результатов

(Отредактировано автором: 09 Ноября, 2014 - 17:37:43)

 
 Top
zero_real
Отправлено: 09 Ноября, 2014 - 17:54:57
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




dXdYdZ пишет:
PHP:
скопировать код в буфер обмена
  1. $reg='#<p>(.+?)</p>#mi';
  2. preg_match_all($reg,$page,$matches);

Здесь $page-HTML-код,
$matches-массив результатов

Спасибо! Здорово Сейчас попробую.

upd:

В целом то, что нужно, но есть ньюансы.

Код может быть немного сложнее:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <p class="class1">текст1. внутри <strong>могут</strong> быть <i>разные</i> теги</p>
  3.  
  4. <p>текст2. внутри <strong>могут</strong> быть <i>разные</i> теги</p>
  5.  
  6. <table>
  7. ....
  8. </table>
  9.  
  10. <p style="somestyle">текст3. внутри <strong>могут</strong> быть <i>разные</i> теги</p>  
  11.  

В тегов <p> могут быть любые параметры. Вместо <table>, может быть <div> или что угодно.

Идея такая: находим открытие тега <p>. Все что идет до открытия следующего тега <p> пишем в ячейку массива и т.д. Т.е. в данном примере у нас должно получится:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.     [0] => <p class="class1">текст1. внутри <strong>могут</strong> быть <i>разные</i> теги</p>
  5.     [1] => <p>текст2. внутри <strong>могут</strong> быть <i>разные</i> теги</p><table>....</table>
  6.     [2] => <p style="somestyle">текст3. внутри <strong>могут</strong> быть <i>разные</i> теги</p>  
  7. )
  8.  
  9.  


Курю мануалы по регуляркам, но пока не пойму как такое реализовать. Если кто-то в теме, поскажите, пожалуйста.

(Отредактировано автором: 09 Ноября, 2014 - 18:12:40)

 
 Top
dXdYdZ
Отправлено: 10 Ноября, 2014 - 20:31:16
Post Id


Посетитель


Покинул форум
Сообщений всего: 271
Дата рег-ции: Нояб. 2013  


Помог: 11 раз(а)




Ну так, тогда вот так получается:
PHP:
скопировать код в буфер обмена
  1. $reg='#<p(.*?)>(.+?)</p>#mi';
  2. preg_match_all($reg,$page,$matches);

Из $matches уже вытаскиваете результат, как Вам удобно
 
 Top
andatr
Отправлено: 06 Февраля, 2015 - 12:46:12
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. $strNew = preg_match_all('#<p(?:>|[^>]+).+?</p>#iu', $str, $out);

(Отредактировано автором: 06 Февраля, 2015 - 12:46:28)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB