Как вывести JavaScript с помощью PHP

Я новичок в 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 для приложения.

Ответ 1

Вам следует избегать разделителей строк 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 "'";

Ответ 2

Ошибка, которую вы получите, если вам нужно избежать кавычек (как и другие ответы).

Чтобы этого избежать, вы можете использовать альтернативный синтаксис для объявлений строк, называемый Heredoc"

С помощью этого синтаксиса вы можете объявить длинную строку, даже содержащую одинарные кавычки и/или двойные кавычки, без необходимости избегать тонов; это сделает ваш код Javascript более легким для записи, изменения и понимания - что всегда хорошо.

В качестве примера ваш код может стать:

$str = <<<MY_MARKER
<script type="text/javascript">
  document.write("Hello World!");
</script>
MY_MARKER;

echo $str;

Обратите внимание, что с синтаксисом Heredoc (как и с строкой, разделенной двойными кавычками) переменные интерполируются.

Ответ 3

Другой вариант - сделать это следующим образом:

<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>

Надеюсь, это поможет.

Ответ 4

Более простой способ - использовать синтаксис heredoc для PHP. Пример:

<?php

echo <<<EOF
<script type="text/javascript">
    document.write("Hello World!");
</script>
EOF;

?>

Ответ 5

Вам нужно избежать двойных кавычек следующим образом:

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 Manual для получения дополнительной информации о строках.

Кроме того, почему вы хотите печатать JavaScript с помощью PHP? Я чувствую, что с вашим дизайном что-то не так.

Ответ 6

Вам нужно избегать ваших котировок.

Вы можете сделать это:

echo "<script type=\"text/javascript\">";

или это:

echo "<script type='text/javascript'>";

или это:

echo '<script type="text/javascript">';

Или просто оставайтесь в стороне от php

<script type="text/javascript">

Ответ 7

Следующее решение должно работать достаточно хорошо для того, что вы пытаетесь сделать.

  • Блок JavaScript расположен очень поздно в документе, поэтому вам не нужно беспокоиться о не существующих элементах.

  • Вы устанавливаете переменную PHP в верхней части script и выводите только значение переменной в блоке JavaScript.

    Таким образом, вам не нужно беспокоиться об избежании двойных кавычек или HEREDOCS (это рекомендуемый метод, если вы действительно должны туда идти).

             Пример внедрения Javascript   

    <div id="helloContainer"><div>
    
    <script type="text/javascript">
        document.getElementById('helloContainer').innerHTML = '<?= $greeting; ?>';
    </script>
    

Ответ 8

Вы хотите сделать это:

<html>
<body>
<?php

print '
<script type="text/javascript">
document.write("Hello World!")
</script>
';

?>
</body>
</html>

Ответ 9

вместо этого вы можете легко сделать это следующим образом:

<html>
<body>
<script type="text/javascript">
<?php
  $myVar = "hello";
?>
   document.write("<?php echo $myVar ?>");
</script>
</body>

Ответ 10

Вы используете "вместо". Он смешивает php-синтаксис с javascript. PHP собирается печатать javascript с функцией эха, но он принимает коды js как неправильный синтаксис php, поэтому попробуйте это,

<html>
<body>
<?php

echo "<script type='text/javascript'>";
echo "document.write('Hello World!')";
echo "</script>";

?>
</body>
</html>

Ответ 11

<?php

echo '<script type="text/javascript">document.write(\'Hello world\');</script>';
?>

Ответ 12

Попробуйте следующее:

<html>
<body>
<?php

echo "<script type="text/javascript">";
echo "document.write("Hello World!");";
echo "</script>";

?>
</body>
</html>