在PHP中使用单引号(转义)

时间:2012-12-08 07:00:06

标签: php javascript jquery html escaping

我在PHP标签中编写HTML代码。已经为锚标签造型写了,如果我改变一些部分会影响。所以我试图在span onclick事件中编写我的代码。这是我的代码

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

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

4 个答案:

答案 0 :(得分:4)

我认为你已经有了代码。但是有点解释:

(i)有两种类型的引号,即单引号('...')和双引号(“......”)。现在,当您使用一种报价方式作为外部报价时,您可以在其中使用其他报价方式,而您无需转义任何报价。

e.g。     回声'他说'多么美好的一天''; 输出:他说“多么美好的一天”

echo "She said 'that is true'";

输出:她说'那是真的'

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

正如您已经注意到,引号对PHP具有特殊意义。为了消除特殊意义,我们“逃脱”了角色。

所以你需要写:     回声'她说'那是真的'';

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

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

即。

$i = 1;

echo "$i";

// output: 1

echo '$i';

// output: $i

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

答案 1 :(得分:3)

    $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;

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

使用\只是转义字符串。

答案 2 :(得分:1)

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

<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;

答案 3 :(得分:0)

使用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