php - 使用 echo 转义 php 中的字符

标签 php html escaping

小问题:

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/

相关文章:

python - 将 JSON 写入文件而不将转义反斜杠写入文件?

ios - 正则表达式中应该转义什么字符

javascript - 在将用户输入添加到 Javascript 中的 DOM 之前清理用户输入

php - 仅验证 Laravel 中的字母数字字符

php - 变量 mysql 查询(其中 $variable = everything)

php - SQLSTATE[23000] : Integrity constraint violation: 1452 Cannot add or update a child row:a foreign key

php - 解析用户在表单上的输入以强制在 php 中的名称上大写

html - CSS Sticky 页眉、页脚和侧边栏

javascript - 创建 HTML 类并通过下拉列表对其进行过滤

c# - 如何使用 iTextSharp 设置 HTML 表格的背景颜色以输出为 PDF