在HTML标签中使用PHP变量?

时间:2011-05-25 20:36:32

标签: php html

我对php很新,但是我坚持这个问题...说我等着给一个给定参数的另一个站点的链接,我该怎么做呢?

这就是我现在所拥有的:

<html>
<body>
<?php
  $param = "test";

  echo "<a href="http://www.whatever.com/$param">Click Here</a>;
?>

</body>
</html>

7 个答案:

答案 0 :(得分:22)

嗯,首先,你可能不想过度使用echo,因为(就像你的情况一样)你很容易在引号上出错。

这可以解决您的问题:

echo "<a href=\"http://www.whatever.com/$param\">Click Here</a>";

但你真的应该这样做

<?php
  $param = "test";
?>
<a href="http://www.whatever.com/<?php echo $param; ?>">Click Here</a>

答案 1 :(得分:12)

您可以通过多种方式执行此操作,具体取决于您使用的引号类型:

  • echo "<a href='http://www.whatever.com/$param'>Click here</a>";
  • echo "<a href='http://www.whatever.com/{$param}'>Click here</a>";
  • echo '<a href="http://www.whatever.com/' . $param . '">Click here</a>';
  • echo "<a href=\"http://www.whatever.com/$param\">Click here</a>";

双引号允许变量位于字符串的中间,其中单引号是字符串文字,因此,将所有内容解释为字符串 - 仅此而已 - 甚至不会扩展\n表示新行字符,它将依次为字符\n

您需要小心使用您决定的任何类型的引用。您不能在双引号字符串中使用双引号(如您的示例中所示),因为您将提前结束字符串,这不是您想要的。但是,您可以通过添加反斜杠来转义内部双引号。

另外,在将不安全的变量(由用户填充)打印到浏览器时,您可能需要小心XSS次攻击。

答案 2 :(得分:8)

我最近一直在使用这种速记方式。 这可能需要配置,但它应该适用于大多数主线PHP安装。 如果您将链接存储在PHP变量中,则可以基于OP执行以下方式:

<html>
  <body>
    <?php
      $link = "http://www.google.com";
    ?>
    <a href="<?= $link ?>">Click here to go to Google.</a>
  </body>
</html>

这会将变量评估为字符串,实质上是echo $ link的缩写;

答案 3 :(得分:2)

我建议使用短'而不是'。如果你这样做,你不必再逃避双引号(\“)。

在这种情况下,你会写

echo '<a href="http://www.whatever.com/'. $param .'">Click Here</a>';

但要了解尼古拉斯的回答“你应该做些什么”来学习如何制作更清晰的代码。

答案 4 :(得分:1)

你可以像我的第一个例子那样将变量嵌入到双引号字符串中,或​​者你可以像我的第二个例子一样使用concantenation(句点):

echo "<a href=\"http://www.whatever.com/$param\">Click Here</a>";

echo '<a href="http://www.whatever.com/' . $param . '">Click Here</a>';

请注意,我使用反斜杠在第一个示例中转义了双引号。

答案 5 :(得分:1)

HI Jasper,

你可以这样做:

<?
sprintf("<a href=\"http://www.whatever.com/%s\">Click Here</a>", $param);
?>

答案 6 :(得分:0)

Heredoc可能是一个选项,请参见示例2:http://php.net/manual/en/language.types.string.php