[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вопрос по регулярным выражениям на php
abu
пример кода :

<div class="day ">бла-бла-бла</div>
<div
class="day month">бла-бла-бла</div>
<div
class="day ">бла-бла-бла</div>
<div
class="day month">бла-бла-бла</div>

задача нужно получить текст методом опережающей и ретроспективной проверки регулярным выражением, т.е. искомый текст может состоять из всяких неизвестный символов, поэтому мы применяем поиск по символам стоящим до и после (опережающая и ретроспективная проверка)
регулярные выражения вида :
preg_match_all('/(?<=<div\sclass=\'day\s\'>)[\s\S]{10,50}(?=<\/div>)/i',$value,$match)

и
preg_match_all('/(?<=<div\sclass=\'day\smonth\'>)[\s\S]{10,50}(?=<\/div>)/i',$value,$match)

справляются на ура ,т.е. первое выдает нам содержимое 1 и 3 дива в второе 2 и 4 дива, хотелось бы сделать не два регулярных а одно, т.е. добавить "или" пробовал так:
preg_match_all('/(?<=<div\sclass=\'day\s\'>)|(?<=<div\sclass=\'day\smonth\'>)[\s\S]{10,50}(?=<\/div>)/i',$value,$match)
почему то ищет только по второму варианту, пробовал так :
preg_match_all('/(?<=[<a-z]{4}\s[=a-z]{6}\'[a-z\s]{4,9}\'>)[\s\S]{10,50}(?=<\/div>)/i',$value,$match)
вообще ни какого результата и еще разным способами, но "или " так и не работало, заранее благодарен за мопощь!?



Спустя 37 минут, 52 секунды (19.09.2011 - 09:44) Invis1ble написал(а):
как-то так попробуй
#(?<=<div\sclass='day\s(?:month)?'>).{10,50}(?=</div>)#i

Спустя 28 минут, 1 секунда (19.09.2011 - 10:12) abu написал(а):
спб , Invis1ble , получилось , следующим выражением
#(?<=<div\sclass='(?:day\s'>)|(?:day\smonth'>)){10,50}(?=</div>)#i


еще вопрос # - это аналог / ?

Спустя 7 минут, 58 секунд (19.09.2011 - 10:20) l@pteff написал(а):
Цитата

# - это аналог / ?

Да. Ещё можно делать границами регулярки прямую черту (|), но тогда в самой регулярке прямую черту в качестве "или" использовать не удастся, т.к. её придётся экранировать, тем самым делая неработоспособной

Спустя 25 минут, 48 секунд (19.09.2011 - 10:46) abu написал(а):
спб l@pteff, буду знать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.