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

3

我正在PHP标签内编写HTML代码。已经为锚点标记样式编写了代码,如果更改某些部分将会受到影响。因此,我试图将我的代码编写在 span onclick 事件内。以下是我的代码:

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

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

1
嘘,heredocs - Charles
1
尝试使用 onclick='window.location.href="www.google.com";' - Jon Hulka
我正在使用 <?php echo "<span onclick='window.location.href="www.google.com";'></span>"; ?> 这段代码,但我认为它不起作用。 - Vignesh Gopalakrishnan
2
然后你需要为php中的引号进行转义:<?php echo "<span onclick='window.location.href=\"www.google.com\";'></span>"; ?> - Jon Hulka
如果您正在echo中使用此代码,为什么代码片段没有显示出来? - maček
4个回答

4

我想你已经得到了代码。然而,需要更多的解释:

(i) 有两种引号,即单引号 (' … ') 和双引号 (" … ")。现在,当您使用一种引号作为外层引号时,您可以在其中使用另一种引号,并且不需要转义任何引号。

例如, echo 'He said "What a lovely day"'; 输出结果: He said "What a lovely day"

echo "She said 'that is true'";

输出: 她说“那是真的”

(ii) 然而,在第二种情况下,如果您想要输出 -> 她说“那是真的” 您需要转义引号。在PHP中,默认的转义字符是\

正如您已经注意到的那样,引号对于PHP具有特殊意义。为了去除特殊含义,我们需要“转义”该字符。

因此,您需要写:

echo '她说“那\'s是真的”';

或者

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

这是转义背后的基本概念。但请注意,有些情况下,这两种引号具有不同的含义。双引号会执行它们内部内容,而单引号则假定其内部内容不需要被评估。
例如:
$i = 1;

echo "$i";

// output: 1

echo '$i';

// output: $i

在编写代码时要记住这一点。


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的特殊字符,在字符串操作中不会被检测到,只会在浏览器中显示。

而使用 \ 则是简单地转义字符串。


我在我的项目中使用了相同的风格,它完美地工作着。因此,我给它点了一个赞。 - Vignesh Gopalakrishnan

1

你为什么一开始要使用单引号?

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

这就是你所需要的,没有必要把事情复杂化 :)


根据您的评论,您正在一个echo中使用它。我认为这有点傻,但在这种情况下,请使用{{link1: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部分就是那个。感谢您宝贵的建议。现在我的代码运行良好。下次让我来测试和处理它。 - Vignesh Gopalakrishnan

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://dev59.com/h2025IYBdhLWcg3wAg_p#6269254


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接