我是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>
提前谢谢你。
答案 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>";