PHP代码:
$name = 'click here';
echo '<a href="http://example.net/some.php" class="menu">$name</a>';
在这里,我期待“单击此处”,但我的输出是:
$name
PHP代码:
$name = 'click here';
echo '<a href="http://example.net/some.php" class="menu">$name</a>';
在这里,我期待“单击此处”,但我的输出是:
$name
在整个语句周围使用双引号echo
并转义 HTML 中的引号,或使用连接运算符.
使用双引号:
"<a href=\"http://example.net/some.php\" class=\"menu\">$name</a>";
使用并列运算符
'<a href="http://example.net/some.php" class="menu">'.$name.'</a>';
使用双引号会导致 PHP 评估字符串中的所有变量(用它们的内容替换它们)。然而,要做到这一点,您还必须通过使它们转义内部双引号,\"
以便 PHP 不会将它们与字符串的结尾混淆。
使用连接运算符,您实际上是在创建 3 个不同的字符串,即打开标记、变量的内容和结束标记,然后使用 将它们粘合在一起.
以形成一个完整的字符串,该字符串发送到echo
.
字符串手动参考 http://php.net/manual/en/language.types.string.php
基础是评估 " (双引号)内的任何内容,而不评估 ' (单引号)内的任何内容。
因此,对于您的代码,有几个选项
用双引号替换单引号并用 \ 转义嵌入的双引号
echo "<a href=\"http://example.net/some.php\" class=\"menu\">$name</a>";
您还可以用单引号替换嵌入的双引号(我不认为 html 介意,不确定 html5)
echo "<a href='http://example.net/some.php' class='menu'>$name</a>";
你也可以做一个 printf,用你的值 $name 替换 %s = string
printf('<a href="http://example.net/some.php" class="menu">%s</a>", $name);
PHP手册准确地解决了这个问题:
注意:与双引号和heredoc 语法不同,特殊字符的变量和转义序列在出现在单引号字符串中时不会被扩展。
要解决此问题,请使用以下任一解决方案:
echo "<a href=\"http://example.net/some.php\" class=\"menu\">$name</a>";
echo '<a href="http://example.net/some.php" class="menu">'.$name.'</a>';
<a href="http://example.net/some.php" class="menu"> <?php echo $name; ?> </a>