Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

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

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

 

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

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

тема: Как извлечь несколько нужных блоков?
 
 автор: mmodem   (29.07.2011 в 16:26)   письмо автору
 
 

Подскажите, пожалуйста, пример, как извлечь все, кроме рекламы? (<p> оставляем)

<div class="body">
<p>У лукоморья дуб зеленый, златая цепь на дубе том</p>
<noindex><div>
<h6>Реклама</h6>
<ul><li>планировали взорвать </li>
<li>VIP-кортеж чуть</li>
<li>на острове был не один</li>
</ul>
</div></noindex>
<p>И днем и ночью кот ученый, все ходит по цепи кругом</p>

</div>
<div class="info">...</div>

  Ответить  
 
 автор: f111   (29.07.2011 в 17:33)   письмо автору
 
   для: mmodem   (29.07.2011 в 16:26)
 

решение наверно кривое, но какое есть
$string = <<<TEXT
<div class="body">
<p>У лукоморья дуб зеленый, златая цепь на дубе том</p>
<noindex><div>
<h6>Реклама</h6>
<ul><li>планировали взорвать </li>
<li>VIP-кортеж чуть</li>
<li>на острове был не один</li>
</ul>
</div></noindex>
<p>И днем и ночью кот ученый, все ходит по цепи кругом</p>

</div>
<div class="info">...</div>
TEXT;
echo preg_replace('{^(.*?)<noindex>.+?</noindex>(.*?)$}is', '$1$2', $string);

ответ

<div class="body">

<p>У лукоморья дуб зеленый, златая цепь на дубе том</p>

<p>И днем и ночью кот ученый, все ходит по цепи кругом</p>

</div>
<div class="info">...</div>

  Ответить  
 
 автор: Deed   (29.07.2011 в 20:33)   письмо автору
 
   для: f111   (29.07.2011 в 17:33)
 

Здравствуйте!
А что мешает написать так:
<noindex>.+?<\/noindex>

P.S.
Уважаемый f111, я просил Вас здесь http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=81858&page=1 объяснить, как создать запись для mod_rewrit'a, если GET-параметров может быть два.
Заранее спасибо!

  Ответить  
 
 автор: f111   (29.07.2011 в 21:22)   письмо автору
 
   для: Deed   (29.07.2011 в 20:33)
 

я не утверждал что мой вариант идеален - "решение наверно кривое, но какое есть"

  Ответить  
 
 автор: mmodem   (29.07.2011 в 23:42)   письмо автору
 
   для: f111   (29.07.2011 в 21:22)
 

Функции preg_match() или preg_match_all() не подходят? А то я с ними колдовал...

  Ответить  
 
 автор: f111   (30.07.2011 в 00:34)   письмо автору
 
   для: mmodem   (29.07.2011 в 23:42)
 

в том примере что я показал нет.
подождите, подскажет кто нибудь решение специально для preg_match() / preg_match_all()

  Ответить  
 
 автор: exp   (30.07.2011 в 00:37)   письмо автору
 
   для: mmodem   (29.07.2011 в 23:42)
 

¤..... preg_split()

  Ответить  
 
 автор: f111   (30.07.2011 в 00:56)   письмо автору
 
   для: exp   (30.07.2011 в 00:37)
 

поясните пожалуйста как использовать preg_split() в данной ситуации

  Ответить  
 
 автор: EXP   (30.07.2011 в 01:18)   письмо автору
 
   для: f111   (30.07.2011 в 00:56)
 

with '¤<noindex>.+?</noindex>¤is', например.
Возможно нужен именно массив блоков текста

  Ответить  
 
 автор: Deed   (30.07.2011 в 09:36)   письмо автору
 
   для: f111   (30.07.2011 в 00:56)
 

Что тут происходит?? Зачем такие сложности?
preg_replace("/<noindex>.+?<\/noindex>/is","",$string);
Все.

  Ответить  
 
 автор: mmodem   (30.07.2011 в 10:10)   письмо автору
 
   для: Deed   (30.07.2011 в 09:36)
 

Я так понимаю, что в моем примере preg_replace идеально, однако, если мой пример окружен разнообразным HTML-кодом, то придется использовать preg_match() / preg_match_all() ?

  Ответить  
 
 автор: Deed   (30.07.2011 в 11:24)   письмо автору
 
   для: mmodem   (30.07.2011 в 10:10)
 

Скопируйте несколько раз Ваш пример в один php-файл и выполните preg_replace с этой простой регуляркой.

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

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