在PHP中使用echo转义字符
作者:互联网
简短问题:
echo '<button type="button" id="add" onClick="addAsset('.$filename.');"> '.$filename.' </button>';
这将创建一个带有onClick函数addAsset(example.png)的按钮;
但是我想拥有addAsset(“ example.png”)我该如何转义“字符?
谢谢!
解决方法:
您可以尝试以下方法:
echo '<button type="button" id="add" onClick="addAsset(\''.$filename.'\');"> '.$filename.' </button>';
因此,不是转义“双引号.”我们转义了“单引号.当读取html输出时,这将更加清楚.
编辑:更好的方法是在php块之外编写html块,如下所示:
<?php
//Your PHP COde
?>
<button type="button" id="add" onClick="addAsset('<?= $filename ?>');"><?= $filename ?></button>
<?php
//More PHP COde
?>
如您所见,它将更具可读性,并且不需要转义.您可能会注意到,它使用<?= $filename?> ;,这只是<?php echo $filename的缩写; ?>.在Escaping from HTML中了解更多有关这方面的信息
编辑2:另外,正如@deceze建议的那样,如果变量$filename可能包含引号或您可以使用htmlentities()的某些东西,它将保护您免受XSS的侵害,如果filename的值
是用户的输入.您可以像下面这样使用它:
<button type="button" id="add" onClick="addAsset('<?= htmlentities($filename) ?>');"><?= htmlentities($filename) ?></button>
此外,在这种特殊情况下,请查看下面的@deceze’s Answer,以更好地了解如何保护代码免受xss的侵害.
标签:escaping,html,php 来源: https://codeday.me/bug/20191025/1929775.html