Подтвердить что ты не робот

Преобразование акцентов в HTML, но игнорирование тегов

Код ниже преобразует текст для символов с акцентами. Но он также преобразует теги HTML, которые я хотел бы оставить без изменений. Как я могу только преобразовать символы с акцентом и оставить все остальные специальные символы неповрежденными? Спасибо.

$temp = file_get_contents("file.html");
echo htmlentities($temp,ENT_NOQUOTES,'UTF-8');
4b9b3361

Ответ 1

htmlspecialchars() и htmlspecialchars_decode() будут только кодировать/декодировать &, <, >, ' и "; вы можете, таким образом, использовать последнее, чтобы преобразовать свои объекты обратно в специальные символы HTML:

echo htmlspecialchars_decode(htmlentities($temp, ENT_NOQUOTES, 'UTF-8'), ENT_NOQUOTES);

Ответ 2

A, но из-за взлома, но вы можете применить htmlentities(), как вы уже делали это сначала, а затем отменить его для стандартных символов xml (<, >, &, ", '), используя htmlspecialchars_decode(). Это восстановит теги.

Ответ 3

Кажется, что это работает ОК

if (!function_exists('make_accents')):
function make_accents($string)
{
    //$string = "<p>Angoulême</p>";
    $trans = get_html_translation_table(HTML_ENTITIES);
    //$encoded = "&lt;p&gt;Angoul&ecirc;me&lt;/p&gt;";
    $encoded = strtr($string, $trans);
    //Next two lines put back the < & > tags
        $noHTML = str_replace("&lt;", "<", $encoded);
    $encoded = str_replace("&gt;", ">", $noHTML);
    return $encoded;
}
endif;