2011-05-25 102 views
10

我很新的PHP,但我坚持这个问题...说我等待把一个链接到另一个网站与给定的参数,我该怎么做correclty?在HTML标签内使用PHP变量?

这是我现在有:

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

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

</body> 
</html> 

回答

18

嗯,首先,你可能不想要过度使用回声,因为(在你的情况的问题),你可以很轻松地在引号的错误。

这将解决您的问题:

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> 
+0

谢谢,这工作。我将更加注意分离HTML和PHP我想:-) – Jasper 2011-05-25 20:57:04

+0

第一个例子适合我,但我想第二个,你需要回显 Ave 2014-06-03 19:42:07

1

您可以嵌入一个变量到像我的第一个例子双引号的字符串,也可以使用concantenation (期间)就像我的第二个例子:

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

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

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

11

你可以这样做多种方式,根据行情的类型,您使用:

  • 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

第三个是最好的选择,因为HTML中的默认值是双引号,并且PHP中单引号中的字符串被更快地解析。 – Midas 2011-05-25 20:49:40

+2

@Midas显然有3微秒(超过1k迭代) - http://www.phpbench.com这表明这是一个微型优化,完全不值得。见http://stackoverflow.com/questions/482202/is-there-a-performance-benefit-single-quote-vs-double-quote-in-php – Nick 2011-05-25 21:02:04

1

HI碧玉,

,你可以这样做:

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

我推荐使用短“,而不是‘如果你这样做,你不会再逃跑了双引号(\’ )。

在这种情况下,你会写

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

不过看在尼古拉斯的回答‘你真的应该做什么’,以了解如何生产更清洁的代码。

5

有一种简略的方法可以做到这一点,我最近一直在使用。 这可能需要进行配置,但它应该可以在大多数主线PHP安装中使用。 如果你存储在PHP变量的链接,您可以根据过以下方式做到这一点OP:

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

这将评估该变量为字符串,在本质上速记回声$链接;