Как удалить HTML специальные символы?

Я понял корень проблемы.
На JVisualVM я видел, что все потоки были заблокированы друг другом, но я не знал, почему. Теперь все ясно - я использую system.out.println () в качестве операции блока, но потоки не могут использовать ее одновременно, консоль заблокирована.
Я изменил вывод консоли на вывод файла (используйте имя потока в качестве имени файла для предотвращения блокировки) и снова запустите приложение. Теперь это работа, как и ожидалось.

Глупая ошибка, но я надеюсь, она кому-нибудь пригодится:)

enter image description here

54
задан felipe.zkn 21 July 2014 в 05:33
поделиться

6 ответов

Или декодируйте их использующий html_entity_decode или удалите их использующий preg_replace:

$Content = preg_replace("/&#?[a-z0-9]+;/i","",$Content); 

(От здесь )

РЕДАКТИРОВАНИЕ: Альтернатива согласно комментарию

Jacco могла бы быть хороша заменить '+' {2,8} или что-то. Это ограничит шанс замены всех предложений когда незакодированный '&'; присутствует.

$Content = preg_replace("/&#?[a-z0-9]{2,8};/i","",$Content); 
107
ответ дан schnaader 7 November 2019 в 07:39
поделиться

Используйте html_entity_decode для преобразования объектов HTML.

необходимо будет установить набор символов, чтобы заставить его работать правильно.

20
ответ дан vartec 7 November 2019 в 07:39
поделиться

Можно хотеть, смотрят на htmlentities () и html_entity_decode () здесь

$orig = "I'll \"walk\" the <b>dog</b> now";

$a = htmlentities($orig);

$b = html_entity_decode($a);

echo $a; // I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now

echo $b; // I'll "walk" the <b>dog</b> now
8
ответ дан 0xFF 7 November 2019 в 07:39
поделиться

Простая ваниль представляет способ в виде строки сделать это, не затрагивая preg regex механизм:

function remEntities($str) {
  if(substr_count($str, '&') && substr_count($str, ';')) {
    // Find amper
    $amp_pos = strpos($str, '&');
    //Find the ;
    $semi_pos = strpos($str, ';');
    // Only if the ; is after the &
    if($semi_pos > $amp_pos) {
      //is a HTML entity, try to remove
      $tmp = substr($str, 0, $amp_pos);
      $tmp = $tmp. substr($str, $semi_pos + 1, strlen($str));
      $str = $tmp;
      //Has another entity in it?
      if(substr_count($str, '&') && substr_count($str, ';'))
        $str = remEntities($tmp);
    }
  }
  return $str;
}
2
ответ дан karim79 7 November 2019 в 07:39
поделиться

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

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);
}

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

1
ответ дан Jacco 7 November 2019 в 07:39
поделиться
<?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
ответ дан 7 November 2019 в 07:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: