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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вырезать весь текст от класса до тега картинки 
:(
    Опции темы
mstdmstd
Дата 30.11.2015, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет,
Нужно из строки вида        
Код

        $str= '<class="someclass">123<p>456<img';

        Вырезать весь текст от класса someclass до тега картинки
        Регулярка 
Код

       $ret = preg_match('~class="someclass">([^<]+)~', str, $matsches );

       режет текст до ближайшего тега параграфа
       А как правильно вырезать текст до картинки? 
          
          Спасибо!          
        
PM MAIL   Вверх
ksnk
Дата 1.12.2015, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Код

$ret = preg_match('~class="someclass">(.+?)<img~', str, $matsches );



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mstdmstd
Дата 2.12.2015, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, помогло!
А вот еще подскажите, для парсинга html-кода мне советовали пользовать DOMDocument и DOMXpath - кажется, они проще, но только в случае если работать с валидным
html-кодом. Если же html-код не валиден (незакрывающиеся теги ошибки синтасиса итд), то регулярка кажется хоть и более заковырестейб но более гибкойю 
Ка по вашему?
PM MAIL   Вверх
ksnk
Дата 2.12.2015, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Про парсинг невалидного html - наткнулся на http://habrahabr.ru/post/110112/. Сам, правда, не проверял, но на первый взгляд - компактно и достаточно удобно для не очень больших документов.

Работающие регулярки, очевидно, лучше, чем неработающие на невалидном HTML стандартные средства.

Добавлено через 2 минуты и 7 секунд
https://github.com/olamedia/nokogiri 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mstdmstd
Дата 3.12.2015, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Еще раз спасибо!
И разжуйте пожалуйста что означает комбинауция .+?  перед "<img" ?
Что то типа "Любой текст(включая спецсимволы) пока не встретиться тег картинки" ?
PM MAIL   Вверх
ksnk
Дата 3.12.2015, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



.+ - не менее одного любого символа. Здесь, возможно, стоит поставить * вместо +, если до тега img может ничего и не быть.
?- Режим - ungreedy - это значит, что будет захвачена последовательность минимально возможной длины.
Лучше почитать про регулярки и модификаторы в документации, инструмент удобный, но со своей собственной логикой и не без ограничений и причуд.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




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


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

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