Как удалить html специальные символы? - PullRequest
52 голосов
/ 18 марта 2009

Я создаю файл RSS-канала для своего приложения, в котором хочу удалить теги HTML, что делается с помощью strip_tags. Но strip_tags не удаляет специальные символы кода HTML:

  & © 

и т.д.

Пожалуйста, скажите мне любую функцию, которую я могу использовать для удаления этих специальных символов кода из моей строки.

Ответы [ 14 ]

1 голос
/ 10 июля 2010
<?php
function strip_only($str, $tags, $stripContent = false) {
    $content = '';
    if(!is_array($tags)) {
        $tags = (strpos($str, '>') !== false
                 ? explode('>', str_replace('<', '', $tags))
                 : array($tags));
        if(end($tags) == '') array_pop($tags);
    }
    foreach($tags as $tag) {
        if ($stripContent)
             $content = '(.+</'.$tag.'[^>]*>|)';
         $str = preg_replace('#</?'.$tag.'[^>]*>'.$content.'#is', '', $str);
    }
    return $str;
}

$str = '<font color="red">red</font> text';
$tags = 'font';
$a = strip_only($str, $tags); // red text
$b = strip_only($str, $tags, true); // text
?> 
1 голос
/ 18 марта 2009

Похоже, что вы действительно хотите:

function xmlEntities($string) {
    $translationTable = get_html_translation_table(HTML_ENTITIES, ENT_QUOTES);

    foreach ($translationTable as $char => $entity) {
        $from[] = $entity;
        $to[] = '&#'.ord($char).';';
    }
    return str_replace($from, $to, $string);
}

Заменяет именованные сущности на их числовой эквивалент.

0 голосов
/ 01 октября 2015

Вы можете попробовать htmlspecialchars_decode($string). У меня это работает.

http://www.w3schools.com/php/func_string_htmlspecialchars_decode.asp

0 голосов
/ 13 мая 2015
$string = "äáčé";

$convert = Array(
        'ä'=>'a',
        'Ä'=>'A',
        'á'=>'a',
        'Á'=>'A',
        'à'=>'a',
        'À'=>'A',
        'ã'=>'a',
        'Ã'=>'A',
        'â'=>'a',
        'Â'=>'A',
        'č'=>'c',
        'Č'=>'C',
        'ć'=>'c',
        'Ć'=>'C',
        'ď'=>'d',
        'Ď'=>'D',
        'ě'=>'e',
        'Ě'=>'E',
        'é'=>'e',
        'É'=>'E',
        'ë'=>'e',
    );

$string = strtr($string , $convert );

echo $string; //aace
...