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 :: Регулярка

 PHP.SU

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


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

> Без описания
event
Отправлено: 18 Апреля, 2014 - 15:06:28
Post Id


Частый посетитель


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


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




Привет.

Есть такой кусок:

CODE (html):
скопировать код в буфер обмена
  1.                 <div class="entry-content post_content">
  2.                 <p>ТЕКСТ, который нужно спарсить</p>
  3.                         </div><!-- .entry-content -->


надо из этого куса спарсить текст, пробую вот так:
PHP:
скопировать код в буфер обмена
  1. preg_match('/<div class=\"entry-content post_content\">(.*)<\/div>/s', $page, $test);


Парсит, но к тому еще парсит другой мусор, который не нужен. Как решить? Закатив глазки
 
 Top
IllusionMH
Отправлено: 18 Апреля, 2014 - 15:15:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




event, если нужен только текст, то попробуйте еще strip_tags.
А еще и жадность нужно убрать у регулярки, а то будет выбирать от дива с классои и до последнего закрывающегося. либо .*? использовать в теле вместо .*, либо ключ U
 
 Top
event
Отправлено: 18 Апреля, 2014 - 15:17:47
Post Id


Частый посетитель


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


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




strip_tags канает, все ок.

Но есть одно, но... Мне все таки нужен preg_match_ALL, а не preg_match, а потом все это в цикл кинуть и потом работать)
 
 Top
Мелкий Супермодератор
Отправлено: 18 Апреля, 2014 - 15:17:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Жадный поиск как он есть.
Если там только текст, без html, то лучше будет так:
CODE (regexp):
скопировать код в буфер обмена
  1. /<div class=\"entry-content post_content\">\s*<p[^>]*>([^<]++)</p>\s*<\/div>/s


-----
PostgreSQL DBA
 
 Top
IllusionMH
Отправлено: 18 Апреля, 2014 - 15:36:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




event, сначала делаете preg_match_all и получите все содержимое всех таких дивов(если уберете жадность). Потом в цикле пробегаете по массиву(или через array_map) и удаляете лишнее.
В итоге в конце будет только текст.

Либо озвучьте что еще нужно, может есть вариант удобней.
 
 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