Я использую htmlspecialchars, чтобы избежать пользовательского ввода, отображаемого на странице (чтобы пользовательский ввод If you want bold text, wrap it around a <b> tag like <b>this</b>
на самом деле, вместо того, чтобы интерпретировать <b>
в качестве фактического HTML и жирным шрифтом tag like this
текст.
htmlspecialchars прекрасно работает здесь, но, похоже, неправильно отображает символы UTF8 как числовой код htmlentity. Например. вид неодобрения ಠ_ಠ
отображается как ಠ_ಠ
после прохождения функции.
Что я должен сделать, чтобы правильно избежать обычного html, но при этом разрешить пользователям использовать специальные символы UTF8?
Вы установили правильную кодировку?
Возможно ли, чтобы символы utf8 были преобразованы в нотацию ಠ? Если вы снова вызовете htmlspecialchars для этой строки, & становится & и, следовательно, больше не является кодом utf8, это можно предотвратить, установив для параметра двойного кодирования значение false. Смотрите документацию на php.net:
Других решений пока нет …