【问题标题】:Use double and single quotes in an echo statement在 echo 语句中使用双引号和单引号
【发布时间】:2015-06-16 04:36:29
【问题描述】:

我正在努力研究如何在 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' 部分时会中断,因为单引号会将其打开。

我能做什么?

【问题讨论】:

  • 转义嵌套的单引号:onClick="_gaq.push([\'_trackEvent\',

标签: php echo


【解决方案1】:

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

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

【讨论】:

  • 只是要注意..这是转义..以防有人想用谷歌搜索它..反斜杠可能意味着任何东西。
【解决方案2】:

你有几个选择,但我个人觉得使用类似 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

【讨论】:

    【解决方案3】:

    另外:如果您这样做,您的 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。

    【讨论】:

    • 您好@Mayhem:请参阅我帖子开头的“旁白”。在英语中,它的意思是“不完全相关,但您可能希望知道这一点”。我认为这很有帮助 - 因此 CW 也是如此。
    • 我懂英语,​​但我认为您不理解回答 OP 问题的意义。格式化代码在这里不相关... OP 只是想知道使用 echo 的方法。他们做到了不问格式...
    • 我理解这个问题很好@Mayhem。是的,格式化代码不是这里的解决方案,但它仍然有帮助。感谢您的想法。
    • 感谢您在此处编辑@Afriend。我已经回滚了这个,因为代码已更改 - &lt;a&gt; 标签内的空格通常对渲染有实质性影响。我认为“旁白”也很重要——它曾经/旨在表明它是补充答案材料,而不是主要答案。
    猜你喜欢
    • 2018-05-09
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    相关资源
    最近更新 更多