Руководство по PHP точно скажет, какие символы изменяются функцией.
Не имеет значения, содержит ли указанная вами строка HTML или JS или что-то еще.Он просто делает эти переводы для любой строки, которую вы ей даете.
Поскольку HTML и JS используют разные escape-символы, это делает произвольные данные «безопасными» для использования в HTML, что включает в себя обеспечение безопасности некоторых JS для использования в HTML.
например,
$js = "if (foo && bar) { return false; }"
echo "<button onclick='" . htmlspecialchars($js) . "'>click</button>"
Выводит:
<button onclick='if (foo && bar) { return false; }'>click</button>
Таким образом предотвращая нарушение скрипта специальным значением, которое &
имеет в HTML.
Это не сделает строку безопасной для использования в JavaScript, поскольку она не затрагивает такие символы, как \
, которые имеют там особое значение.