-2

PHP代码:

$name = 'click here';

echo '<a href="http://example.net/some.php" class="menu">$name</a>'; 

在这里,我期待“单击此处”,但我的输出是:

$name
4

3 回答 3

0

在整个语句周围使用双引号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.

于 2013-08-15T21:41:57.577 回答
0

字符串手动参考 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);
于 2013-08-15T21:43:27.250 回答
0

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>
于 2013-08-15T21:48:02.427 回答