在echo语句中使用双引号和单引号

时间:2015-04-10 12:43:09

标签: php echo

我正在努力弄清楚如何在不打破回声的情况下在echo语句中使用双引号和单引号。

例如,我想创建一个输出如下的链接:

<a href="http:/www.blah.com" class="read-more" onClick="_gaq.push(['_trackEvent', 'External Link', 'Buy Link', 'Item name']);">Read this post...</a>

但是我想输出PHP变量来代替href,并作为onClick

中的一个参数

href部分很简单,我可以打破PHP回显并将变量连接到:

echo '<a href="'.$link.'" class="read-more">Read this post...</a>';

但是当涉及到onClick内部的参数时,我会陷入困境,因为我无法包含它们,因为使用'打破了我的回声:

echo '<a href="<?php echo the_permalink(); ?>" class="read-more" onClick="_gaq.push(['_trackEvent', 'External Link', 'Buy Link', ''. echo $pattern_name .'']);">Read this post...</a>';

因此,上面的代码在到达'trackEvent'部分时就会中断,因为单引号将其打开。

我该怎么办?

3 个答案:

答案 0 :(得分:2)

反斜杠(escape characters)是你最好的朋友:

echo '<a href="'.the_permalink().'" class="read-more" onClick="_gaq.push([\'_trackEvent\', \'External Link\', \'Buy Link\', \''. $pattern_name .'\']);">Read this post...</a>';

答案 1 :(得分:0)

你有几个选择,但我个人觉得使用像echo这样的东西很难看。

我会在这些方面提出更多建议(逃避)

$pattern_name = "something";
$linkhref = someFunction();
echo "<a href='{$linkhref}' class='read-more' onclick='_gaq.push([\"_trackEvent\", \"External Link\", \"Buy Link\", \"{$pattern_name}\"]);'>Read this post...</a>";

这个

$pattern_name = "something";
echo "<a href='".someFunction()."' class='read-more' onclick='_gaq.push([\"_trackEvent\", \"External Link\", \"Buy Link\", \"{$pattern_name}\"]);'>Read this post...</a>";

只是个人偏好

结果......

<a href='index.php' class='read-more' onclick='_gaq.push(["_trackEvent", "External Link", "Buy Link", "something"]);'>Read this post...</a>

使用复杂(卷曲)语法http://php.net/manual/en/language.types.string.php#language.types.string.parsing.complex

答案 2 :(得分:-2)

除此之外:如果您执行此操作,您的HTML代码将更具可读性:

<a
    href="http:/www.blah.com"
    class="read-more"
    onClick="_gaq.push(['_trackEvent', 'External Link', 'Buy Link', 'Item name']);"
>Read this post...</a>

每个属性都有自己的行,因此很容易找到,编辑器中的水平滚动变得不那么必要了。最棒的是,这是完全有效的HTML。