我对php很新,但是我坚持这个问题...说我等着给一个给定参数的另一个站点的链接,我该怎么做呢?
这就是我现在所拥有的:
<html>
<body>
<?php
$param = "test";
echo "<a href="http://www.whatever.com/$param">Click Here</a>;
?>
</body>
</html>
答案 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