Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Простая регулярка, но есть нюансы )
 
 автор: dima4321   (25.02.2011 в 10:18)   письмо автору
 
 

Имею контент, нужная мне инфа заключена между тегами.

Ипсользую preg_math_all

Вот упрощеная маска для вашего воприятия.

$poisk='/<div>.+?<div>/si';


т.е. поясняю.

Мне нужен контент между двумя началами дивов. Именно между двумя началами. А не <div>.+?</div> !!


Отсюда вся и проблема. По такой маске он делает перескок .


Это текст.

<div>рыба</div><div>дерево</div><div>тюлень</div><div>морж</div><div>конь</div>


Моя маска найдет рыба, тюлень,конь

Зацепится я больше ни за что не могу. Такая маска <div>.+?</div> к моему контенту к сожалению не подходит, есть нюансы


Внимание а теперь вопрос

как сделать так чтобы он нашел все слова . Может можно как-то дать понять поиску , что я не хочу , чтобы он перескакивал и использовал второй <div> как начало для новых вхождений.

Реально ли. ??? Может цикл, может условие иили шшшо -нибудь ??))

$poisk='/<div>.+?<div>/si';

Очень прошу помочь ))

  Ответить  
 
 автор: cheops   (25.02.2011 в 10:33)   письмо автору
 
   для: dima4321   (25.02.2011 в 10:18)
 

Я так понимаю, между </div> и <div> находится что-то еще, раз такое регулярное выражение - нельзя к чему-то еще привязаться? Что стоит непосредственно перед <div>?

  Ответить  
 
 автор: Trianon   (25.02.2011 в 10:47)   письмо автору
 
   для: dima4321   (25.02.2011 в 10:18)
 

По-моему, Положительное утверждение по последующему тексту (positive lookahead assertion) (?=шаблон) должно помочь.
как-то так.
$poisk='/<div>.+?(?=<div>)/si'; 

  Ответить  
 
 автор: Deed   (25.02.2011 в 15:07)   письмо автору
 
   для: dima4321   (25.02.2011 в 10:18)
 


<?
preg_match_all
("/(?<=>)[^<>]+(?=<)/s",$text,$matches);
?>

Вообще, если вы хотите, чтобы вам быстро помогли, приводите реальные примеры ваших проблем.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования