Доступ к защищенному нестатистическому базовому классу может быть доступен членам и друзьям любых классов, полученных из этого базового класса, с помощью одного из следующих:
Подробно останавливаясь на чужом ответе:
<script>
var myvar = <?php echo json_encode($myVarValue); ?>;
</script>
Используя json_encode () требует:
$myVarValue
закодированный как UTF-8 (или US-ASCII, конечно) Начиная с UTF-8 поддерживает полный Unicode, должно быть безопасно преобразовать на лету.
Примечание, что, потому что json_encode
наклонные черты вправо Escape, даже строки, которая содержит </script>
, оставят безопасно для печати с блоком сценария.
При использовании механизма шаблонной обработки для построения HTML тогда, можно заполнить его тем, что когда-либо Вы хотите!
Выезд XTemplates. Это - хороший, легкий, движок шаблонов с открытым исходным кодом.
Ваш HTML/JS там был бы похож на это:
<script>
var myvar = {$MyVarValue};
</script>
символы htmlspecialchars
Certain Описания
string htmlspecialchars ( string $string [, int $quote_style [, string $charset [, bool $double_encode ]]] )
имеют специальное значение в HTML и должны быть представлены объектами HTML, если они должны сохранить свои значения. Эта функция возвращает строку с некоторыми из этих сделанных преобразований; сделанные переводы являются самыми полезными для повседневного веб-программирования. Если Вы требуете, чтобы вся символьная сущность HTML была переведена, используйте htmlentities () вместо этого.
Эта функция полезна в препятствовании тому, чтобы предоставленный пользователями текст содержал разметку HTML, такой как в приложении гостевой книги или форуме.
выполненные переводы:
* '&' (ampersand) becomes '&'
* '"' (double quote) becomes '"' when ENT_NOQUOTES is not set.
* ''' (single quote) becomes ''' only when ENT_QUOTES is set.
* '<' (less than) becomes '<'
* '>' (greater than) becomes '>'
Можно вставить его в скрытый DIV, затем присвоить innerHTML DIV к переменной JavaScript. Вы не должны волноваться о выходе ни из чего. Просто обязательно не поместите поврежденный HTML там.
Я имел подобную проблему и понимаю, что следующее является лучшим решением:
<script>
var myvar = decodeURIComponent("<?php echo rawurlencode($myVarValue); ?>");
</script>
Однако ссылка , что отправленный micahwittman предполагает, что существуют некоторые незначительные различия в кодировании. PHP's rawurlencode()
функция, как предполагается, выполняет RFC 1738 , в то время как, кажется, не было такого усилия с JavaScript decodeURIComponent()
.
function escapeJavaScriptText($string)
{
return str_replace("\n", '\n', str_replace('"', '\"', addcslashes(str_replace("\r", '', (string)$string), "\0..\37'\\")));
}
Вы могли попробовать
<script type="text/javascript">
myvar = unescape('<?=rawurlencode($myvar)?>');
</script>
Приведенное ниже решение Мики сработало для меня, поскольку сайт, который мне пришлось настраивать, не был в UTF-8, поэтому я не мог использовать json; Я бы проголосовал за это, но моя репутация недостаточно высока.
function escapeJavaScriptText($string)
{
return str_replace("\n", '\n', str_replace('"', '\"', addcslashes(str_replace("\r", '', (string)$string), "\0..\37'\\")));
}
Я не уверен, является ли это плохой практикой или нет, но моя команда и я использовали смешанное решение html, JS и php. . Мы начнем со строки PHP, которую мы хотим вставить в переменную JS, давайте назовем ее:
$someString
Затем мы используем скрытые элементы формы на странице и устанавливаем их значение в виде строки:
<form id="pagePhpVars" method="post">
<input type="hidden" name="phpString1" id="phpString1" value="'.$someString.'" />
</form>
Тогда это просто вопрос определение JS-переменной через document.getElementById:
<script type="text/javascript" charset="UTF-8">
var moonUnitAlpha = document.getElementById('phpString1').value;
</script>
Теперь вы можете использовать JS-переменную "moonUnitAlpha" везде, где хотите получить это строковое значение PHP. Кажется, это работает очень хорошо для нас. Посмотрим, выдержит ли он интенсивное использование.