Преобразование акцентов в HTML, но игнорирование тегов
Код ниже преобразует текст для символов с акцентами. Но он также преобразует теги HTML, которые я хотел бы оставить без изменений. Как я могу только преобразовать символы с акцентом и оставить все остальные специальные символы неповрежденными? Спасибо.
$temp = file_get_contents("file.html");
echo htmlentities($temp,ENT_NOQUOTES,'UTF-8');
Ответы
Ответ 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 = "<p>Angoulême</p>";
$encoded = strtr($string, $trans);
//Next two lines put back the < & > tags
$noHTML = str_replace("<", "<", $encoded);
$encoded = str_replace(">", ">", $noHTML);
return $encoded;
}
endif;