Передайте строку PHP переменной JavaScript (и выйдите из новых строк) [дубликат]

Доступ к защищенному нестатистическому базовому классу может быть доступен членам и друзьям любых классов, полученных из этого базового класса, с помощью одного из следующих:

  • Указатель на прямо или косвенно производный класс
  • Ссылка на прямой или косвенно производный класс
  • Объект прямого или косвенного производного класса
375
задан Ry- 8 January 2014 в 07:04
поделиться

10 ответов

Подробно останавливаясь на чужом ответе:

<script>
  var myvar = <?php echo json_encode($myVarValue); ?>;
</script>

Используя json_encode () требует:

  • PHP 5.2.0 или больше
  • $myVarValue закодированный как UTF-8 (или US-ASCII, конечно)

Начиная с UTF-8 поддерживает полный Unicode, должно быть безопасно преобразовать на лету.

Примечание, что, потому что json_encode наклонные черты вправо Escape, даже строки, которая содержит </script>, оставят безопасно для печати с блоком сценария.

513
ответ дан Flimm 22 November 2019 в 23:59
поделиться

При использовании механизма шаблонной обработки для построения HTML тогда, можно заполнить его тем, что когда-либо Вы хотите!

Выезд XTemplates. Это - хороший, легкий, движок шаблонов с открытым исходным кодом.

Ваш HTML/JS там был бы похож на это:

<script>
    var myvar = {$MyVarValue};
</script>
-2
ответ дан Chandru 22 November 2019 в 23:59
поделиться

символы htmlspecialchars

Certain Описания

string htmlspecialchars ( string $string [, int $quote_style [, string $charset [, bool $double_encode ]]] )

имеют специальное значение в HTML и должны быть представлены объектами HTML, если они должны сохранить свои значения. Эта функция возвращает строку с некоторыми из этих сделанных преобразований; сделанные переводы являются самыми полезными для повседневного веб-программирования. Если Вы требуете, чтобы вся символьная сущность HTML была переведена, используйте htmlentities () вместо этого.

Эта функция полезна в препятствовании тому, чтобы предоставленный пользователями текст содержал разметку HTML, такой как в приложении гостевой книги или форуме.

выполненные переводы:

* '&' (ampersand) becomes '&amp;'
* '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
* ''' (single quote) becomes '&#039;' only when ENT_QUOTES is set.
* '<' (less than) becomes '&lt;'
* '>' (greater than) becomes '&gt;'

http://ca.php.net/htmlspecialchars

2
ответ дан Chris MacDonald 22 November 2019 в 23:59
поделиться

Можно вставить его в скрытый DIV, затем присвоить innerHTML DIV к переменной JavaScript. Вы не должны волноваться о выходе ни из чего. Просто обязательно не поместите поврежденный HTML там.

3
ответ дан Diodeus - James MacFarlane 22 November 2019 в 23:59
поделиться

Я имел подобную проблему и понимаю, что следующее является лучшим решением:

<script>
    var myvar = decodeURIComponent("<?php echo rawurlencode($myVarValue); ?>");
</script>

Однако ссылка , что отправленный micahwittman предполагает, что существуют некоторые незначительные различия в кодировании. PHP's rawurlencode() функция, как предполагается, выполняет RFC 1738 , в то время как, кажется, не было такого усилия с JavaScript decodeURIComponent().

21
ответ дан pr1001 22 November 2019 в 23:59
поделиться
function escapeJavaScriptText($string)
{
    return str_replace("\n", '\n', str_replace('"', '\"', addcslashes(str_replace("\r", '', (string)$string), "\0..\37'\\")));
}
22
ответ дан micahwittman 22 November 2019 в 23:59
поделиться

закодируйте его JSON

27
ответ дан Javier 22 November 2019 в 23:59
поделиться

Вы могли попробовать

<script type="text/javascript">
    myvar = unescape('<?=rawurlencode($myvar)?>');
</script>
3
ответ дан Jacob 22 November 2019 в 23:59
поделиться

Приведенное ниже решение Мики сработало для меня, поскольку сайт, который мне пришлось настраивать, не был в UTF-8, поэтому я не мог использовать json; Я бы проголосовал за это, но моя репутация недостаточно высока.

function escapeJavaScriptText($string) 
{ 
    return str_replace("\n", '\n', str_replace('"', '\"', addcslashes(str_replace("\r", '', (string)$string), "\0..\37'\\"))); 
} 
5
ответ дан 22 November 2019 в 23:59
поделиться

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

-1
ответ дан 22 November 2019 в 23:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: