<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
#(?<=<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, буду знать.