Сфера тегов

Экранирование HTML в PHP для передачи в Javascript переменную

Недавно столкнулся с проблемой: необходимо было подставить HTML текст с помощью PHP в переменную Javascript для дальнейшего использования, но т.к. многие символы (типа перевод строки и т.д.) JS не воспринимает в одной строке, их необходимо экранировать.

Например, мы имеем html текст:

<p>
<span style="font-size: small;">1. Текст</span>
</p>
<p>
<span style="font-size: small;">2. Текст</span>
</p>

в переменной PHP $data.

Если написать такой код

<script type="text/javascript">
  var data='<? echo $data; ?>';
  alert(data);
</script>

то получим ошибку на этапе присваивания значения переменной data.

Решение данной проблемы не сложное, но пришлось покопаться:

<script type="text/javascript">
  var data='<? echo addcslashes($data,"\\\'\"&\n\r<>"); ?>';
  alert(data);
</script>

Функция addcslashes экранирует все заданные во второй параметре символы исходной строки и после этого JS с радостью принимает нашу строку =)

Оставить комментарий