Escape Javascript в PHP

Я ищу лучший способ избежать некоторого текста 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 через регулярное выражение, которое будет избегать одиночных кавычек?

Related of "Escape Javascript в PHP"

json_encode – правильный инструмент для работы. Ваша проблема возникает из-за того, что вы также включаете Javascript в атрибут HTML , поэтому он также должен быть htmlspecialchars -encoded.

 echo " onclick=\"SwitchDiv(" . htmlspecialchars(json_encode($option)) . ")\"";