Конвертировать акценты в HTML, но игнорировать теги - PullRequest
12 голосов
/ 23 января 2011

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

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

Ответы [ 3 ]

22 голосов
/ 23 января 2011

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

echo htmlspecialchars_decode(htmlentities($temp, ENT_NOQUOTES, 'UTF-8'), ENT_NOQUOTES);
1 голос
/ 23 января 2011

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

0 голосов
/ 01 февраля 2011

Кажется, это работает хорошо

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...