如何用PHP输出JavaScript

18 php

我是PHP的新手.我需要用PHP输出以下JavaScript.这是我的代码:

<html>
<body>
<?php

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

?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但它显示错误:

解析错误:语法错误,意外T_STRING,期待','或';' 在第4行的/var/www/html/workbench/person/script.php中

有人可以帮忙吗?我还需要一些关于如何在应用程序中使用PHP,HTML和JavaScript的简单教程.

Ion*_*tan 54

您应该转义PHP字符串中的JavaScript字符串分隔符.您正在为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>
Run Code Online (Sandbox Code Playgroud)

当字符串分隔符与引号相同时,您必须在JavaScript和PHP上转义引号:

echo "\""; // escape is done using a backslash
echo '\'';
Run Code Online (Sandbox Code Playgroud)

与JavaScript相同:

alert("\""); // escape is done using a backslash
alert(echo '\'');
Run Code Online (Sandbox Code Playgroud)

但是因为读取具有这种转义序列的字符串非常困难,所以最好根据需要将单引号与双引号结合起来:

echo '"';
echo "'";
Run Code Online (Sandbox Code Playgroud)

  • 好的时候给这个答案一个正确的!投票.来吧@krishna,这是值得的.这家伙为你抽出时间.我认为3年足够长的时间来完成这个配偶. (8认同)
  • 我可以建议改变`// PHP使用单引号,JavaScript使用双引号``//这里,我们使用单引号用于PHP,双引号用于JavaScript`?这样就更清楚了,那些不是关于PHP和JavaScript的规则 (3认同)
  • @Jasper你是对的.我用过你的措辞.谢谢! (2认同)

Pas*_*TIN 32

你得到的错误,因为你需要逃避引号(如其他答案所说).

为避免这种情况,您可以为字符串声明使用替代语法,称为" Heredoc "

使用这种语法,您可以声明一个长字符串,甚至包含单引号和/或双引号,而不必转义; 它将使您的Javascript代码更容易编写,修改和理解 - 这总是一件好事.

例如,您的代码可能变为:

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

echo $str;
Run Code Online (Sandbox Code Playgroud)

请注意,使用Heredoc语法(与双引号分隔的字符串一样),插入变量.

  • +1使用HEREDOC,这是处理大型代码块的更好方法. (2认同)

Joh*_*han 8

另一种选择是这样做:

<html>
    <body>
    <?php
    //...php code...  
    ?>
    <script type="text/javascript">
        document.write("Hello World!");
    </script>
    <?php
    //....php code...
    ?>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果您想在JavaScript中使用PHP,请执行以下操作:

<html>
    <body>
    <?php
        $text = "Hello World!";
    ?>
    <script type="text/javascript">
        document.write("<?php echo $text ?>");
    </script>
    <?php
    //....php code...
    ?>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

希望这可以提供帮助.


Tur*_*nor 5

更简单的方法是使用PHP的heredoc语法.一个例子:

<?php

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

?>
Run Code Online (Sandbox Code Playgroud)