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

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

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

 

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

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

тема: как избавится от тегов<p> и т.п.
 
 автор: ronin   (20.03.2007 в 16:01)   письмо автору
 
 

Здравствуйте!
К примеру я скачиваю объявления с чужого сайта, кидаю их к себе в Ворд, обрабатываю, перекидываю в блокнот, и уже из блокнота закидываю на сайт, при этом текст идет с тегами,

Компьютер Acer PDA c530 новый гар.1р. ориг. весь комплект WM 5.0 GPS/BT/WLAN ц.360 у.о&nbsp; <BR>тел.:  222-22-22, </P> <P>&nbsp;</P>

которых ни в Ворде, ни в Блокноте не видно. Ни
mysql_escape_string, htmlspecialchars
на вводе, ни

$name = htmlspecialchars(stripslashes($name )); 

на выходе не помогают.

   
 
 автор: ronin   (20.03.2007 в 18:50)   письмо автору
 
   для: ronin   (20.03.2007 в 16:01)
 

Я пытаюсь так:

 $DESCRIPTION = str_replace("<BR>","", $DESCRIPTION);
 $DESCRIPTION = str_replace("&nbsp;","", $DESCRIPTION);
  $DESCRIPTION = str_replace("<P>","", $DESCRIPTION);
    $DESCRIPTION = str_replace("</P>","", $DESCRIPTION);
    $DESCRIPTION = str_replace("<p>","", $DESCRIPTION);

В таком случае <BR> &nbsp; <P></P> - пропадают, но это ведь неправильно?

   
 
 автор: Trianon   (20.03.2007 в 18:54)   письмо автору
 
   для: ronin   (20.03.2007 в 18:50)
 

Вы, как я понял, этого и добиваетесь - чтоб они пропали....
Почему неправильно?

   
 
 автор: ronin   (20.03.2007 в 18:58)   письмо автору
 
   для: Trianon   (20.03.2007 в 18:54)
 

наверное есть какая-то универсальная функция по обрабытыванию текста, взятого из Ворда или Блокнота, вот как htmlspecialchars, которая в данном случае не работает. ?

   
 
 автор: Trianon   (20.03.2007 в 19:03)   письмо автору
 
   для: ronin   (20.03.2007 в 18:58)
 

нет.
И htmlspecialchars() - это не универсальная функция. Это функция с вполне конкретным назначением - поменять пятерку символов на соответствующие эквиваленты языка разметки.

   
 
 автор: ronin   (21.03.2007 в 10:04)   письмо автору
 
   для: Trianon   (20.03.2007 в 19:03)
 

Спасибо!

   
 
 автор: zerocool   (21.03.2007 в 12:04)   письмо автору
 
   для: ronin   (21.03.2007 в 10:04)
 


$text = preg_replace ('/<[a-zA-Z]>.*?<\/[a-zA-Z]>|<br>|<p>.*?<\/p>/is', '', $text);  

   
 
 автор: ronin   (21.03.2007 в 16:20)   письмо автору
 
   для: zerocool   (21.03.2007 в 12:04)
 

Спасибо! Наверное это то, что нужно, но в том виде, что есть, оно вырезает ВЕСЬ текст. Я поработаю в поиске...

   
 
 автор: ronin   (21.03.2007 в 16:40)   письмо автору
 
   для: ronin   (21.03.2007 в 16:20)
 


<?php
// $document на выходе должен содержать HTML-документ.
// Необходимо удалить все HTML-теги, секции javascript,
// пробельные символы. Также необходимо заменить некоторые
// HTML-сущности на их эквивалент.

$search = array ("'<script[^>]*?>.*?</script>'si",  // Вырезает javaScript
                 
"'<[\/\!]*?[^<>]*?>'si",          // Вырезает HTML-теги
                 
"'([\r\n])[\s]+'",                // Вырезает пробельные символы
                 
"'&(quot|#34);'i",                // Заменяет HTML-сущности
                 
"'&(amp|#38);'i",
                 
"'&(lt|#60);'i",
                 
"'&(gt|#62);'i",
                 
"'&(nbsp|#160);'i",
                 
"'&(iexcl|#161);'i",
                 
"'&(cent|#162);'i",
                 
"'&(pound|#163);'i",
                 
"'&(copy|#169);'i",
                 
"'&#(\d+);'e");                    // интерпретировать как php-код

$replace = array ("",
                 
"",
                 
"\\1",
                 
"\"",
                 
"&",
                 
"<",
                 
">",
                 
" ",
                 
chr(161),
                 
chr(162),
                 
chr(163),
                 
chr(169),
                 
"chr(\\1)");

$text preg_replace($search$replace$document);
?>

радикальное средство - чисто тайд

   
 
 автор: Саня   (21.03.2007 в 21:31)   письмо автору
 
   для: ronin   (20.03.2007 в 16:01)
 

Почему бы просто не воспользоваться функцией strip_tags()?

   
 
 автор: ronin   (22.03.2007 в 10:22)   письмо автору
 
   для: Саня   (21.03.2007 в 21:31)
 

Если я не ошибаюсь, то эта функция не работает, если нет закрывающего тега, в таком случае может пропасть весь текст?

   
 
 автор: ronin   (22.03.2007 в 10:55)   письмо автору
 
   для: ronin   (22.03.2007 в 10:22)
 

Я попробывал $text = strip_tags($text ); , не удаляет:

&nbsp;

а все остальное чистит.

   
 
 автор: Саня   (22.03.2007 в 11:03)   письмо автору
 
   для: ronin   (22.03.2007 в 10:55)
 

$text = strip_tags(str_replace("&nbsp;", "", $text));

   
 
 автор: ronin   (22.03.2007 в 12:17)   письмо автору
 
   для: Саня   (22.03.2007 в 11:03)
 

Все работает! Спасибо!

   
Rambler's Top100
вверх

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