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

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

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

 

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

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

тема: Вырезать пустые теги
 
 автор: axxil   (25.10.2005 в 09:47)   письмо автору
 
 

Здравствуйте.
При проведении преобразования doc->html получился код, захламлённый пустыми тегами, и тегами c br внутри.Например:

<P><FONT face=Verdana><BR></FONT><BR></P>
<P></P>


Вопрос можно ли как-нибудь избавится от этого с помощью регулярных выражений?
Т.Е. задача: удалить все ПУСТЫЕ теги или ТЕГИ внутри которых находится только <BR>

За квант берётся параграф, т.е. структура, ограниченная <P></P>. Внутри него и надо проводить чистку.

   
 
 автор: cheops   (25.10.2005 в 14:06)   письмо автору
 
   для: axxil   (25.10.2005 в 09:47)
 

Хм... а если просто str_replace() заменить? Или не везде срабатывает?
<?php
  $text 
str_replace("<P></P>"""$text);
  
$text str_replace("<P><BR></P>"""$text);
?>

   
 
 автор: Axxil   (25.10.2005 в 17:26)   письмо автору
 
   для: cheops   (25.10.2005 в 14:06)
 

Вот именно что <BR> может быть между двумя ЛЮБЫМИ парными тегами.
И задача в том что если кроме <BR> между ними больше ничего нет (либо вообще ничего, кроме пробелов нет), тогда необходимо снести такую конструкцию нафиг.

Короче обычная чистка кода... По-моему такие скрипты даже существуют, которые вычищают Дримвиверовские "Авгиевы конюшни". А тут попроще будет, наверное :)

   
 
 автор: cheops   (25.10.2005 в 18:09)   письмо автору
 
   для: Axxil   (25.10.2005 в 17:26)
 

Т.е. надо вырезать только <br> а всё остальное оставить?

   
 
 автор: Axxil   (26.10.2005 в 09:23)   письмо автору
 
   для: cheops   (25.10.2005 в 18:09)
 

Да нет... надо вырезать все парные пустые теги и все парные теги внутри которых только <br>

   
 
 автор: cheops   (26.10.2005 в 09:33)   письмо автору
 
   для: Axxil   (26.10.2005 в 09:23)
 

Попробуйте следующий скрипт
<?php
  $pattern 
"|<[^>]+>[\s]*<br>[\s]*<[^>]+>|";
  
$text preg_replace($pattern""$text);
  
$pattern "|<[^>]+>[\s]*<[^>]+>|";
  
$text preg_replace($pattern""$text);
  echo 
$text;
?>

   
 
 автор: Axxil   (26.10.2005 в 13:59)   письмо автору
 
   для: cheops   (26.10.2005 в 09:33)
 

Я вот так переделал. Потому что <br> может быть несколько. Правильно?
<?
          $pattern 
"|<[^{>,/}]*>[\s]*[<br>]*[\s]*</[^>]*>|"
          
$text preg_replace($pattern""$text); 
          
$pattern "|<[^{>,/}]*>[\s]*</[^>]*>|"
          
$text preg_replace($pattern""$text);
?>

   
 
 автор: cheops   (26.10.2005 в 20:34)   письмо автору
 
   для: Axxil   (26.10.2005 в 13:59)
 

Ммм... дело в том, что всё что заключается в квадратные скобки интерпретируется как один символ... но вообще в описанном контексте это может сработать, так как вряд ли текст между какими либо тэгами будет состоять из <, b, r и > и это будет не <br>.

   
 
 автор: Axxil   (27.10.2005 в 10:28)   письмо автору
 
   для: cheops   (26.10.2005 в 20:34)
 

Спасибо большое!

На самом деле всё работает.

   
Rambler's Top100
вверх

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