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

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

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

 

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

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

тема: Получить текст между двумя <div>
 
 автор: starpom   (09.01.2011 в 13:50)   письмо автору
 
 

<div class="text">
                        <p>Игрок Арсенала, по крайней мере, повел себя честно и осознал свое поведение.,<br />

Перед пенальти на последней минуте в<br />
матче Кубка Англии Арсенал-Лидс, был,<br />
еще один эпизод, когда арбитр матча также хотел назначить<br />
одиннадцатиметровый. Но после</p>
                        
                    </div>


Подскажите как получить весь текст <div class="text"> и </div>. Я пробую:
preg_match_all("/(?<= div class=\"text\">).*?<div/s", $content, $text);
- не работает

  Ответить  
 
 автор: cheops   (09.01.2011 в 14:25)   письмо автору
 
   для: starpom   (09.01.2011 в 13:50)
 

Можно воспользоваться следующим регулярным выражением
<?php
  $text 
'<div class="text"> 
                        <p>Игрок Арсенала, по крайней мере, повел себя честно и осознал свое поведение.,<br /> 

Перед пенальти на последней минуте в<br /> 
матче Кубка Англии Арсенал-Лидс, был,<br /> 
еще один эпизод, когда арбитр матча также хотел назначить<br /> 
одиннадцатиметровый. Но после</p> 
                         
                    </div>'
;
  
$pattern "|<div class=\"text\">(.*?)</div>|is";
  
preg_match_all($pattern$text$out);
  
print_r($out);
?>

  Ответить  
 
 автор: starpom   (09.01.2011 в 14:53)   письмо автору
 
   для: cheops   (09.01.2011 в 14:25)
 

Спасибо, то что надо, единственное что не очень гут, так это то, что при выводе этого текста на экран после обработки:
$text= strip_tags(trim($text[0][0]));

между строками в разных местах бывают непонятные мне разрывы (по всей видимости там какие-то непечатные символы или что-то в этом роде), не подкажите как от них избавиться, скажем заменив на пробелы?

  Ответить  
 
 автор: cheops   (09.01.2011 в 15:00)   письмо автору
 
   для: starpom   (09.01.2011 в 14:53)
 

После этой обработки добавьте еще одну
<?php
  $text 
preg_replace("|[\s]+|s"" "$text);
?>

Она заменит все последовательности пробельных символов обычным пробелом.

  Ответить  
 
 автор: starpom   (09.01.2011 в 15:07)   письмо автору
 
   для: cheops   (09.01.2011 в 15:00)
 

Спасибо

  Ответить  
 
 автор: Trianon   (09.01.2011 в 14:26)   письмо автору
 
   для: starpom   (09.01.2011 в 13:50)
 

<? 
$pattern
='%
<div[^>]*>
(
  (
     [^<]*
  |
     <
      (?!/div)
        [^>]*>
  )*
)</div>
%x'
;
preg_match_all($pattern$text$m);

 
print_r($m[1]);

И надо понимать, что вложенную структуру регулярка не раскроет.
Это вообще не ее профиль. Не смотря на наличие рекурсивных ссылок.

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

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