Я ищу лучший способ избежать некоторого текста Javascript в PHP, а json_encode
– неправильный инструмент для работы.
Проблема исходит из этой строки:
echo "onclick = \" SwitchDiv ('". $ option."') \ "";
Если в $option
есть апостроф, это сочный шар на стороне клиента. Но выполнение прямого json_encode
(который отлично работает в других контекстах) не помогает:
echo "onclick = \" SwitchDiv (". json_encode ($ option).") \ "";
Это создает выходную строку onclick="SwitchDiv("athlete's foot")"
, что приводит к преждевременному завершению значения onclick
. (Это также происходит, если я onclick
значение onclick
в одинарных кавычках.)
Есть ли элегантный способ обойти это? Должен ли я просто json_encode
вывод json_encode
через регулярное выражение, которое будет избегать одиночных кавычек?
json_encode
– правильный инструмент для работы. Ваша проблема возникает из-за того, что вы также включаете Javascript в атрибут HTML , поэтому он также должен быть htmlspecialchars
-encoded.
echo " onclick=\"SwitchDiv(" . htmlspecialchars(json_encode($option)) . ")\"";