htmlentities преобразует символы HTML мнемоники
htmlspecialchars преобразует только символы:
Обе функции используются для «вывода», чтобы обезопасить веб-страницу от атак с использованием межсайтовых сценариев. Считается, что htmlentities() лучше при экранировании данных, отправляемых клиенту/
Используйте флаг ENT_QUOTES и кодировку UTF-8, как ниже в примере
htmlentities($userdata, ENT_QUOTES, ‘UTF-8’);Флаг ENT_QUOTES указывает ему преобразовывать как двойные, так и одинарные кавычки.
Ни одна из функций не подходит для XML-эскейпинга, потому что «слово» преобразовывает в «слово» при этом даже браузер начинает ругаться на RSS:
error on line 2 at column 902: Entity 'laquo' not definedпоэтому я пока что применяю такую функцию:
public function xmlEscape(string $string): string
{
return str_replace(['&', '<', '>', '\'', '"'], ['&', '<', '>', ''', '"'], $string);
}Но, иногда я все же использую htmlspecialchars в XML, например:
<loc>' . htmlspecialchars($url, ENT_QUOTES | ENT_XML1) . '</loc>или в админке для вывода данных в textarea.
В то же время htmlentities использую, например для максимально безопасного вывода данных на сайте:
<title>'.htmlentities($title).'</title>
Комментарии
Комментариев пока нет.