小问题:
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 block 之外编写 html block ,如下所示:
<?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()
的内容为此,如果 filename
的值,它将保护您免受 XSS 攻击
是来自用户的输入。你可以像下面这样使用它:
<button type="button" id="add" onClick="addAsset('<?= htmlentities($filename) ?>');"><?= htmlentities($filename) ?></button>
另外,检查 @deceze's Answer为了更好地了解如何在这种特殊情况下保护您的代码免受 xss 攻击,请阅读下文。
关于php - 使用 echo 转义 php 中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46993915/