Йцу Йцуевич: Конкретно для тегов лучше использовать htmlspecialchars.
htmlentities конвертирует ВСЕ символы которые могут быть ковертированны, тогда как htmlspecialchars конвертирует только те символы, которые могут быть в тегах.
я прочитал, но всё же не могу понять, что означает "все HTML сущности", какие ещё символы можно конвертировать кроме: ', ", &, <, >
(и то важные последние два)
Йцу Йцуевич: С php.net:
This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.
Т.е htmlentities преобразует ВСЕ символы (с учетом кодировки) для которых есть html эквивалент.
Возьми для примера символы от сюда(3 столбец) www.degraeve.com/reference/specialcharacters.php и закодируй их обоими функциями, и увидишь отличия.
такая ситуация, я вижу постоянно одно и тоже, но открыл вкладку Network (в Chrome), и увидел там, что на символ '‰' возвращаются разные значения:
$s = '‰';
echo $s; // ‰
echo htmlspecialchars($s); // ‰
echo htmlentities($s); // ‰
а в случае $s = '&' первые две строки (с echo) возвращают разное
Ну конечно в браузере они будут отображаться одинаково, так как браузер их автоматически преобразовывает. Видно что в 3 случае возвращается &_permil; это я так понимаю работа htmlentities.
Вообще чтобы не заморачиваться, используй htmlspecialchars.