Передача переменных из PHP в JavaScript

Передача переменных из PHP в JavaScript


PHP программисты иногда сталкиваются с проблемами при попытке динамически генерировать JavaScript код. Проблема заключается  в использовании некоторых символах одновременно в JavaScript, а также в PHP. Это условие может несколько усложнить нам жизнь, но выход найти можно. 


Избавляемся от кавычек и символов перевода строки.


Предположим мы работаем с PHP переменной, которая должна быть выведена с помощью функции alert в JavaScript.


$str = "небольшой фрагмент текста
разбитый более чем на одну строку
и содержащий "двойные" и `одиночные` кавычки";


Чтобы вывести сообщение, содержащееся в переменной $str в JavaScript напрашивается решение вида:


<script type="text/javascript">
  alert("<?php echo $str; ?>");
</script>


 что приводит к ошибке в коде в JavaScript:


<script type="text/javascript">
  alert("небольшой фрагмент текста
разбитый более чем на одну строку
и содержащий "двойные" и `одиночные` кавычки ");
</script>


Во-первых, разделители строки в JavaScript не работают, их нужно заменить на \n (символ представляющий перевод строки). Во-вторых, двойные кавычки внутри текста конфликтуют с внешними кавычками при вызове alert.


С учетом выше сказанного вот код, который будет работать корректно:


<script type="text/javascript">
 alert("<?php echo preg_replace("/\r?\n/", "\\n", addslashes($str));?>");
</script> 


Как видим нам понадобились две функции PHP:


1) preg_replace - поиск и замена по регулярному выражению
2) addslashes — экранирует строку с помощью слэшей, возвращает строку, в которой перед каждым спецсимволом добавлен обратный слэш


Если мы выводим сообщение из PHP кода нам необходимо будет сделать следующее:


$str = preg_replace("/\r?\n/", "\\n", addslashes($str));
echo "<script type="text/javascript"> ";
echo "  alert("$str"); ";
echo "</script> ";


или


<?php
$str = preg_replace("/\r?\n/", "\\n", addslashes($str));
?> 
<script type="text/javascript">;
alert("<?php echo $str; ?>");
</script>;


В результате получим:


<script type="text/javascript">
  alert("небольшой фрагмент текста\n разбитый более чем на одну строку\n и содержащий \" двойные \" и \`одиночные\` кавычки ");
</script>


 Этот же самый подход может быть использован во многих схожих ситуациях где из PHP необходимо передать переменную в JavaScript.


При попытке отладить этот код следует проверить его работоспособность в JavaScript (современные браузеры имеют встроенные отладчики) и только потом посмотреть как код может быть получен из PHP.


Примечание: нет необходимости дополнительно преобразовывать символы & и " к их эквивалентным кодам объекта HTML, так как JavaScript - это независимый от HTML язык и умеет без проблем работать с этими символами.

Ключевые слова для данной страницы: Веб разработка, передача переменных, переменная PHP в JavaScript
Количество просмотров: 1869
Вернуться к списку статей

Заказать сайт в Москве, Питере, Волгограде, Астрахани   Создание и разработка сайтов   Сделать сайт-визитку   Создадим промо-сайт   Разработка информационных порталов   Создание интернет-магазина   Разработаем корпоративный сайт   Продвижение и оптимизация сайта на заказ