Я новичок в PHP. Мне нужно вывести следующий JavaScript с PHP. Это мой код:
<html> <body> <?php echo "<script type="text/javascript">"; echo "document.write("Hello World!")"; echo "</script>"; ?> </body> </html>
Но он показывает ошибку:
Ошибка анализа: синтаксическая ошибка, неожиданный T_STRING, ожидающий ',' или ';' в /var/www/html/workbench/person/script.php в строке 4
Кто-нибудь может помочь? Мне также нужны некоторые простые руководства по использованию PHP, HTML и JavaScript для приложения.
Вы должны избегать разделителей строк JavaScript внутри строки PHP. Вы используете двойные кавычки для строк PHP и JavaScript. Попробуйте это вместо этого:
<html> <body> <?php // Here, we use single quotes for PHP and double quotes for JavaScript echo '<script type="text/javascript">'; echo 'document.write("Hello World!")'; echo '</script>'; ?> </body> </html>
Вы должны избегать цитат как на JavaScript, так и на PHP, когда разделитель строк совпадает с кавычками:
echo "\""; // escape is done using a backslash echo '\'';
То же самое в JavaScript:
alert("\""); // escape is done using a backslash alert(echo '\'');
Но поскольку очень сложно читать строку с такими escape-последовательностями, лучше комбинировать одиночные с двойными кавычками, если необходимо:
echo '"'; echo "'";
Ошибка, которую вы получите, если вам нужно избежать кавычек (как и другие ответы) .
Чтобы этого избежать, вы можете использовать альтернативный синтаксис для объявлений строк, называемых « Heredoc »,
С помощью этого синтаксиса вы можете объявить длинную строку, даже содержащую одинарные кавычки и / или двойные кавычки, без необходимости избегать томов; это сделает ваш код Javascript более легким для записи, изменения и понимания – что всегда хорошо.
Например, ваш код может стать:
$str = <<<MY_MARKER <script type="text/javascript"> document.write("Hello World!"); </script> MY_MARKER; echo $str;
Обратите внимание, что с синтаксисом Heredoc (как и с строкой, разделенной двойными кавычками) переменные интерполируются.
Другой вариант – сделать следующее:
<html> <body> <?php ...php code... ?> <script type="text/javascript"> document.write("Hello World!"); </script> <?php ....php code... ?> </body> </html>
и если вы хотите использовать php внутри своего javascript, выполните следующие действия:
<html> <body> <?php $text = "Hello World!; ?> <script type="text/javascript"> document.write("<?php echo $text ?>"); </script> <?php ....php code... ?> </body> </html>
Надеюсь, это поможет.
Более простой способ – использовать синтаксис heredoc для PHP. Пример:
<?php echo <<<EOF <script type="text/javascript"> document.write("Hello World!"); </script> EOF; ?>
Вам нужно избегать ваших котировок.
Вы можете сделать это:
echo "<script type=\"text/javascript\">";
или это:
echo "<script type='text/javascript'>";
или это:
echo '<script type="text/javascript">';
Или просто держаться подальше от php
<script type="text/javascript">
Вам нужно избегать двойных кавычек следующим образом:
echo "<script type=\"text/javascript\">"; echo "document.write(\"Hello World!\")"; echo "</script>";
или используйте одиночные кавычки внутри двойных кавычек, а именно:
echo "<script type='text/javascript'>"; echo "document.write('Hello World!')"; echo "</script>";
или наоборот, вот так:
echo '<script type="text/javascript">'; echo 'document.write("Hello World!")'; echo '</script>';
Кроме того, ознакомьтесь с руководством PHP для получения дополнительной информации о Strings.
Кроме того, почему вы хотите печатать JavaScript с помощью PHP? Я чувствую, что что-то не так с вашим дизайном.
Следующее решение должно работать достаточно хорошо для того, что вы пытаетесь сделать.
Блок JavaScript находится очень поздно в документе, поэтому вам не нужно беспокоиться о не существующих элементах.
Вы устанавливаете переменную PHP в верхней части скрипта и выставляете только значение переменной в блоке JavaScript.
Таким образом, вам не нужно беспокоиться об избежании двойных кавычек или HEREDOCS (это рекомендуемый метод, если вы действительно должны туда идти).
Пример внедрения Javascript
<div id="helloContainer"><div> <script type="text/javascript"> document.getElementById('helloContainer').innerHTML = '<?= $greeting; ?>'; </script>
Вы хотите сделать это:
<html> <body> <?php print ' <script type="text/javascript"> document.write("Hello World!") </script> '; ?> </body> </html>
вместо этого вы могли бы легко сделать это следующим образом:
<html> <body> <script type="text/javascript"> <?php $myVar = "hello"; ?> document.write("<?php echo $myVar ?>"); </script> </body>
Вы используете «вместо». Он смешивает php-синтаксис с javascript. PHP собирается печатать javascript с функцией эха, но он принимает коды js как неправильный синтаксис php, поэтому попробуйте это,
<html> <body> <?php echo "<script type='text/javascript'>"; echo "document.write('Hello World!')"; echo "</script>"; ?> </body> </html>
<?php echo '<script type="text/javascript">document.write(\'Hello world\');</script>'; ?>
Попробуй это:
<html> <body> <?php echo "<script type="text/javascript">"; echo "document.write("Hello World!");"; echo "</script>"; ?> </body> </html>