【问题标题】:Using single quotes (escaping) in PHP在 PHP 中使用单引号(转义)
【发布时间】:2012-12-08 07:00:05
【问题描述】:

我正在 PHP 标记中编写 HTML 代码。已经为锚标记样式编写了,如果我更改某些部分会影响。所以我试图在 span onclick 事件中编写我的代码。这是我的代码

 <div>
    <span style='cursor:pointer;' onclick='window.location.href='www.google.com'>
       ".$array1[$i] ['name']."
    </span>
 </div>

如果单击该数组[名称],它应该转到 google.com。问题是我用来提及我的 URL 的单引号。如何在此事件中转义字符串?

【问题讨论】:

  • 嘘,heredocs.
  • 试试onclick='window.location.href="www.google.com";'
  • 我在里面使用这个 "; ?> 我认为这行不通。
  • 那你需要为php &lt;?php echo "&lt;span onclick='window.location.href=\"www.google.com\";'&gt;&lt;/span&gt;"; ?&gt;转义引号
  • 如果您在 echo 中使用它,为什么代码 sn-p 不显示?

标签: php javascript jquery html escaping


【解决方案1】:

我想你已经得到了代码。不过再解释一下:

(i) 有两种类型的引号,即单引号 (' ... ') 和双引号 (" ... ")。现在,当您使用一种风格的引用作为外引用时,您可以在其中使用另一种风格的引用,而无需转义任何引用。

例如 echo '他说“多么美好的一天”'; 输出:他说“多么美好的一天”

echo "She said 'that is true'";

输出:她说'那是真的'

(ii) 但是在第二种情况下,如果你想输出 -> 她说'那是真的' 您需要转义报价。在 php 中默认转义字符是 \

正如您已经注意到的,引号对 PHP 具有特殊意义。为了消除特殊含义,我们“转义”了字符。

所以你需要写: echo '她说“那是真的”';

echo "She said \"that's true\"";

这是转义背后的基本概念。但请注意,这两种引号在某些情况下具有不同的含义。双引号在它们内部的内容中执行,而单引号假定它们内部的内容不被评估。

$i = 1;

echo "$i";

// output: 1

echo '$i';

// output: $i

编写代码时请记住这一点。

【讨论】:

  • 感谢您的建议。
【解决方案2】:
    $strLocation = 'http://www.google.com';
    $strLink = "<span onclick='window.location.href=&#39;".$strLocation."&#39;'>HI there</span>";

(or)

$strLink = '<span onclick="window.location.href=\''.$strLocation.'\'">HI there</span>';

    print $strLink;

使用&amp;#39; 是一个HTML 特殊字符,在字符串操作期间不会被检测到,只会出现在浏览器中。

使用\ 只是转义字符串。

【讨论】:

  • 我在我的项目中使用了相同的样式,并且效果很好。所以我标记了一票。
【解决方案3】:

你为什么首先使用单引号?

<div>
    <span style="cursor:pointer;" onclick="window.location.href='www.google.com'">
        <?php echo $array1[$i]['name'] ?>
    </span>
</div>

这就是你所需要的;没有必要让事情变得更复杂:)


根据您的评论,您在 echo 中使用它。我认为这有点傻,但在这种情况下,使用heredoc 语法

echo <<<EOD
    <div>
        <span style="cursor:pointer;" onclick="window.location.href='www.google.com'">
            <?php echo $array1[$i]['name'] ?>
        </span>
    </div>
EOD;

【讨论】:

  • 对不起伙计!我所有的代码都在 PHP 中。唯一的 html 部分就是那个。谢谢您的宝贵建议。现在我的代码运行良好。让我从下一次开始测试并继续工作。
【解决方案4】:

使用json_encode,它会可靠地为您管理转义。

<? $exampleA = "Escape this 's"; ?>
<? $exampleB = 'Escape this "s'; ?>
<script>
var a = <?= json_encode($exampleA) ?> // result: var a = "Escape this 's"
var b = <?= json_encode($exampleB) ?> // result: var b = "Escape this \"s"
</script>

在这里找到:https://stackoverflow.com/a/6269254/922522

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2017-06-26
    • 2011-01-20
    相关资源
    最近更新 更多