Форматирование HTML-кода

Тема в разделе "Регулярные выражения", создана пользователем krobol, 6 май 2011.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. krobol

    krobol

    Регистр.:
    6 июн 2008
    Сообщения:
    455
    Симпатии:
    126
    Никак не могу разобраться с регулярками и модификаторами s, m

    Есть текст:

    HTML:
    
    <td>
      <div id="head">
        заголовок
      </div>
      текст_после
    </td>
    <td>текст_до
      <div id="head">
        заголовок
      </div>
      текст_после
    </td>
    <td>
      текст_до
      <div id="head">
        заголовок
      </div>
    </td>
    <td>
      <div id="head">
        заголовок
      </div>
    </td>
    
    как обернуть каждый "текст_до" и каждый "текст_после" в
    <div id="body">
    </div> ?
    В "текст_до" и "текст_после" могут входить теги <p>, <b> и т.п.
    У <td> могут быть различные параметры style, class, font.

    делаю так, но не получается, ни без "%m", ни без "%s":
    PHP:
    $content preg_replace(
        
    '%(<td[^>]*?>)(.*?)(<div id="head">.*?</td>)%ims',
        
    '\\1<div id="body">\\2</div>\\3',
        
    $content
    );

    $content preg_replace(
        
    '%(<td[^>]*?>.*?<div id="head">)(.*?)(</td>)%ims',
        
    '\\1<div id="body">\\2</div>\\3',
        
    $content
    );
     
  2. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    PHP:
    $content preg_replace
        
    '/<\/div>(.*?)<\/td>.*?<td[^>]*>(.*?)<div id=\"head\">/si'
        
    '</div><div id="body">$1</div></td><td><div id="body">$2</div><div id="head">'
        
    $content 
    ); 
     
    krobol нравится это.
Статус темы:
Закрыта.