Intereting Posts
Эффективность Preg_replace Установить файл cookie после отправки в браузер UTF-8 Декодирование для php Как я могу отлаживать, почему простой запрос MySQL возвращает false? Отправить письмо с библиотекой электронной почты CodeIgnitor Не удалось открыть входной файл: composer.phar Получение данных из базы данных MySQL с использованием PHP, отображение ее в форме для редактирования Функция вызова PHP SOAP-клиента с параметрами Продолжайте получать «Ежедневный лимит неисполненного использования превышен. Продолжение использования требует регистрации "при попытке Google плюс вход в мое веб-приложение добавление gmt раз в php Подстановочный знак Laravel Homestead и Nginx поддомен Какая библиотека лучше всего разбирает файлы Excel в PHP? Можно ли использовать массив в PHP? Foreach показывает только последний элемент в массиве Как удалить лишние теги <br /> из HTML-кода с помощью PHP?

Могу ли я писать PHP внутри JavaScript внутри PHP?

Внутри скрипта PHP у меня есть следующее:

echo <<<EOD <script type="text/javascript"> document.getElementById('my_element_id').innerHTML='Do stuff'; </script> EOD; 

Можно ли добавить PHP в JavaScript? Заменить часть «Делать вещи» на PHP-код? Если да, как мне это сделать?

Прежде всего, следует отметить, что это не имеет ничего общего с javascript. У вас может быть любая форма текста. Ваш фактический вопрос заключается в том, как использовать переменную внутри heredoc.

Heredoc определяется следующим образом:

Nowdocs – это строки с одним кавычком, что heredocs – это строки с двойными кавычками . A nowdoc задается аналогично heredoc, но синтаксический анализ не выполняется внутри nowdoc. Конструкция идеально подходит для встраивания PHP-кода или других больших блоков текста без необходимости экранирования.

Это означает, что, поскольку это работает:

 $name = 'Foo'; echo "My name is $name"; // Using double quotes so variables get expanded 

Тогда это также работает:

 $name = 'Foo'; echo <<<EOD My name is <strong>$name</strong> EOD; // Using heredoc so variables get expanded 

По существу это означает, что да, до тех пор, пока вы сначала помещаете содержимое 'Do stuff' в переменную. Обратите внимание: если вы используете более продвинутые переменные / массивы, рекомендуется добавить $array = json_encode($array) прежде чем вставлять его в JS-код (предположим, что $nameThe Boss's Wife тогда апостроф разрушит ваш JS, если вы не кодируете его).

DEMO

Можно сделать так:

 <?php $anyphpvariable='foo'; echo <<<EOD <script type="text/javascript"> document.getElementById('my_element_id').innerHTML=$anyphpvariable; </script> EOD; ?> 

Все, что угодно от php, может быть присвоено JS и его хорошей практике. Но JS не может присваивать что-либо PHP.

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

 <div id="footer">Hey</div> <?php $myVar = 'Hello'; echo "<SCRIPT> document.getElementById('footer').innerHTML = '$myVar'; </SCRIPT>"; ?> // You will see Hello in the footer 

но это не сработает:

 <?php $myVar = 'Hello'; echo "<SCRIPT> document.getElementById('footer').innerHTML = '$myVar'; </SCRIPT>"; ?> <div id="footer">Hey</div>// You will see Hey in the footer 

В качестве дополнительной заметки эти другие функции / методы также будут работать:

 $myVar = 'Hi'; echo "<SCRIPT> alert('$myVar'); </SCRIPT>";//Alerts 'Hi' $myVar = 'home.php'; echo "<SCRIPT> location = '$myVar'; </SCRIPT>";//Takes you to home.php $myVar = 'hi'; echo "<SCRIPT> myFunction('$myVar'); </SCRIPT>";//calls myFunction with argument $myVar