Вы можете сделать что-то вроде
<script>
php_variable = <?= json_encode($php_variable) ?>;
</script>
, что должно даже позволить вам создавать массивы и, возможно, объекты.Требуется PHP 5.2 или более поздняя версия.Если вы застряли без json_encode
, вы можете заключить кавычки вокруг вызова в addslashes
, но это не позволит вам создавать массивы и тому подобное.
Если вы намерены установить значение в некоторомформа, вы можете сделать как
<input type="text" name="stuff" value="<?= htmlentities($stuff) ?>">
и, конечно, вы можете получить доступ к значению этого элемента в вашем скрипте, если это необходимо.
Два ключевых момента, которые нужно убрать здесь:
Поскольку PHP генерирует страницу, он может выводить что угодно, даже прямо в середине <script>
элемента.Вы можете использовать это для передачи переменных с сервера на клиент, но не наоборот.(Передача клиентских переменных ... ну ... для этого фактически требуется XHR или отправка формы.)
Но всегда * избегайте вещей, идущих из PHP в любое место - особенно если этовдаваясь в HTML, JS или непосредственно в SQL.Если ваш сервер не установит все запаздывающие (например, включающие магические кавычки), PHP получит необработанные данные, и у него могут быть специальные символы, которые приведут к разрыву одного или всех из них.
* Хорошо, не вполне всегда.Если у вас есть переменная PHP, содержащая некоторый HTML или JS, который вы хотите вывести как HTML / JS, то не избегайте этого.Но вы должны знать, что означает «XSS», и не выводить данные вслепую, предоставленные пользователем.