htmlspecialchars & quot; Запрещенная точка кода & quot; Ошибка проверки

Мой скрипт php получает строки из таблицы MySQL, которые содержат такие строки, как:

$string = 'ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨';

Есть ли способ вывести эти виды строк в браузер, не получая «Запрещенную кодовую точку» при запуске документа через валидатор HTML5?

Я пробовал следующее:

htmlspecialchars($string);
htmlspecialchars($string, ENT_SUBSTITUTE, 'UTF-8');
htmlspecialchars($string, ENT_DISALLOWED, 'UTF-8');
htmlspecialchars(mb_convert_encoding($string, 'UTF-8');

но все эти выражения по-прежнему приводят к ошибке «Запрещенная кодовая точка». Кодировка веб-страницы уже установлена ​​в UTF-8 через метатег:

<meta charset="UTF-8">

0

Решение

Функция PHP htmlentities() может быть то, что вы ищете.
Эта функция преобразует соответствующие символы, введенные в нее, в объекты HTML.

Например:

$string = 'ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨';
$string = htmlentities($string);
echo $string;

Преобразует вашу строку ï¼’ã¤ã®ä¹³é…¸èŒã®ç¨ в &iuml;&frac14;&rsquo;&atilde;&curren;&atilde;&reg;&auml;&sup1;&sup3;&eacute;&hellip;&cedil;&egrave;&OElig;&atilde;&reg;&ccedil;&uml;uml; который может быть использован для отображения на странице HTML без ошибок.

Более подробную информацию об этой функции можно найти здесь: https://secure.php.net/manual/en/function.htmlentities.php

1

Другие решения

Решение, которое работало для меня, было:

htmlspecialchars($string, ENT_SUBSTITUTE | ENT_DISALLOWED);

Это преобразовало как можно больше символов в UTF-8 и удалило все остальное.

0

По вопросам рекламы [email protected]