开始PhP:保护报价

时间:2013-12-17 17:34:21

标签: php html double-quotes

我是PhP n00b。我正在阅读一些在线教程,但我已经有了一个问题(我想是一个非常基本的问题):

我不明白为什么以下代码正常运行:

<html>
    <head>
        <title> My Firts PHP page </title>
    </head>
    <body>
        <?php
            $userAgent = $_SERVER["HTTP_USER_AGENT"];
            echo "<p>This is my awesome User Agent: <b>\"$userAgent\"</b></p>";
        ?>
    </body>
</html>

而且,以下不起作用,虽然我保护括号内的引号:

<html>
    <head>
        <title> My Firts PHP page </title>
    </head>
    <body>
        <?php
            echo "<p>This is my awesome User Agent: <b>$_SERVER[\"HTTP_USER_AGENT\"]</b></p>";
        ?>
    </body>
</html>

提前谢谢你。

4 个答案:

答案 0 :(得分:2)

您可以尝试以下方法之一:

花括号允许字符串中的复杂表达式

<html>
    <head>
        <title> My Firts PHP page </title>
    </head>
    <body>
        <?php
            echo "<p>This is my awesome User Agent: <b>{$_SERVER[\"HTTP_USER_AGENT\"]}</b></p>";
        ?>
    </body>
</html>

更好的是,只需将php用于输出的部分。

<html>
    <head>
        <title> My Firts PHP page </title>
    </head>
    <body>
        <p>This is my awesome User Agent: <b><?php echo $_SERVER["HTTP_USER_AGENT"]; ?></b></p>
    </body>
</html>

答案 1 :(得分:2)

你基本上找到了string interpolation的边缘情况。虽然需要在PHP中引用字母数字数组键,但在双引号字符串中,它们需要不加引号

echo "<p>This is my awesome User Agent: <b>$_SERVER[HTTP_USER_AGENT]</b></p>";

字符串解析遵循自己的规则。通常,您不能将随机PHP代码放入字符串中并将其执行。

答案 2 :(得分:1)

错误使用escapinng报价。看看并测试它:

echo "<p>This is my awesome User Agent: <b>". $_SERVER["HTTP_USER_AGENT"] ."</b></p>";

答案 3 :(得分:0)

您可以在字符串中包含一个变量,如下所示:

echo "<p>This is my awesome User Agent: <b>{$_SERVER["HTTP_USER_AGENT"]}</b></p>";

如果您使用

,它会更好更清洁
echo "<p>This is my awesome User Agent: <b>". $_SERVER["HTTP_USER_AGENT"] ."</b></p>";

或者数组键中没有单引号

echo "<p>This is my awesome User Agent: <b>$_SERVER[HTTP_USER_AGENT]</b></p>";