PHP анализирует содержимое JavaScript внутри heredoc
<?php
$javascript = <<<EOT
<script type="text/javascript">
function test () {
return 'test test test n test test test';
}
</script>
EOT;
echo $javascript;
?>
n выше разбирается как новая строка PHP, генерирует HTML-источник следующим образом
return 'test test test
test test test';
И это приводит к синтаксической ошибке JavaScript: unterminated string literal.
У меня есть большой кусок кода JavaScript, поэтому я не хочу оборачивать их, как
$javascript = "<script type="text/javascript">nfunction test()...n";
И на самом деле код JavaScript не является прямым эхом к странице, он передается в другую функцию, поэтому мне нужна переменная PHP.
Итак, как я могу определить переменную PHP, которая содержит большой кусок кода JavaScript без вызывает проблемы?
Есть ли способ, подобный if / endif?
<?php if (condition): ?>
html code...
<?php endif ?>
2 ответа:
Вариант 1: Используйте NOWDOC, который относится к HEREDOCs, как
'
одинарные кавычки относятся к"
двойным кавычкам.$javascript = <<<'EOT' ...\n... EOT;
Вариант 2: экранировать специальный символ:
$javascript = <<<EOT ...\\n... EOT;