Настраиваемая чистка текста от html тегов

Тема в разделе "PHP", создана пользователем guru85, 30 авг 2011.

Модераторы: latteo
  1. guru85

    guru85 Постоялец

    Регистр.:
    24 мар 2010
    Сообщения:
    134
    Симпатии:
    3
    есть функция которая полностью очищает текст от html тегов, но нужно добавить туда функцию исключения, чтобы к примеру теги форматирования, такие как перенос строки, абзац и др. не удалять. Вот сама функция
    PHP:
    function getTextFromHTML($htmlText)
    {
        
    $search = array ("'<script[^>]*?>.*?</script>'si",  // Remove javaScript 
           
    "'<style[^>]*?>.*?</style>'si",  // Remove styles 
           
    "'<xml[^>]*?>.*?</xml>'si",  // Remove xml tags 
           
    "'<[\/\!]*?[^<>]*?>'si",           // Remove HTML-tags 
           
    "'([\r\n])[\s] '",                 // Remove spaces
           
    "'&(quot|#34);'i",                 // Replace HTML special chars
           
    "'&(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");                    // write as php

        
    $replace = array (""
                          
    ""
                          
    "",
                          
    "",
                          
    "\\1"
                          
    "\""
                          
    "&"
                          
    "<"
                          
    ">"
                          
    " "
                          
    chr(161), 
                          
    chr(162), 
                          
    chr(163), 
                          
    chr(169), 
                          
    "chr(\\1)"); 
                          
        return 
    preg_replace($search$replace$htmlText);
    }
    как бы туда исключения запихать?
     
  2. Dima Kos

    Dima Kos Постоялец

    Регистр.:
    1 апр 2010
    Сообщения:
    54
    Симпатии:
    6
    ну по логике надо добавить в функцию еще один параметр, в котором передавать теги, которые НЕ нужно заменять. А потом в самой функции делать проверку. Код писать не буду, тут школьных знаний достаточно.
     
  3. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    strip_tags ( string $str [, string $allowable_tags ] )
    Эта функция возвращает строку str , из которой удалены HTML и PHP тэги.
    Необязательный второй аргумент может быть использован для указания тэгов, которые не должны удаляться.
    например:
    Код:
    strip_tags ( $text, '<br><del><strong><em><a><font><p>' )
    в данном случае из текста удалятся все теги кроме <br><del><strong><em><a><font><p>