我在PHP标签中编写HTML代码。已经为锚标签造型写了,如果我改变一些部分会影响。所以我试图在span onclick事件中编写我的代码。这是我的代码
<div>
<span style='cursor:pointer;' onclick='window.location.href='www.google.com'>
".$array1[$i] ['name']."
</span>
</div>
如果点击了该数组[名称],则应该转到google.com。问题是我用来提及我的URL的单引号。如何在此事件中转义字符串?
答案 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='".$strLocation."''>HI there</span>";
(or)
$strLink = '<span onclick="window.location.href=\''.$strLocation.'\'">HI there</span>';
print $strLink;
使用'
是一个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>