3

为什么我无法在 PHP heredoc 中结束 javascript?

此行下面的其余代码:

</script> 

不再是 PHP 代码的一部分。它们变成了 HTML 代码。

就像结束脚本代码结束 PHP 块一样。

$headerContent = <<<HEAD
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
    <head>
    <title>$title</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />

    <script>
    </script> // Here is the problem
    </head> // code here and below becomes not part of PHP.
    <body>
    .
    . 
    .
HEAD;

屏幕截图以获得更好的视图

解决此问题的任何提示?

4

1 回答 1

3

虽然我无法用 HEREDOC 重现这一点(不同版本的 PHP 在这方面的行为可能不同),但在 PHP 代码中</script>是等价的?>,因为它是<script language="php">. 例子:

<script language="php"> $a = 1; </script>
Test: <?= $a ?>

所以无论你遇到?>关闭标签的问题,你也会遇到同样的</script>关闭标签问题。一种选择是将其存储在变量中并使用它。例子:

<?php

$endScript = '</' . 'script>';
$headerContent = <<<HEAD
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
    <head>
    <title>$title</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />

    <script>
    $endScript
    </head>
    <body>
    .
    . 
    .
HEAD;
于 2013-03-09T11:20:13.730 回答