当标题包含撇号时,以下代码会产生 javascript 错误。我以为我用 htmlentities 正确地清理了标题字段,但是当标题包含单引号时我仍然收到 javascript 错误。
如果标题包含撇号,我应该如何正确清理此字符串以使函数正常工作?
Javascript:
<script type="text/javascript">
function open_modal_now(id,title,e){
e.preventDefault();
$('#someid').val(id);
$('#anotherid').val(title);
$('#yetanotherid').modal('show');
}
</script>
HTML/PHP:
<?php foreach($item as $k => $v){ ?>
<a onClick="open_modal_now(<?= $v['id']; ?>,'<?= htmlentities($v['title'],ENT_QUOTES,"UTF-8"); ?>',event);">Open Modal</a>
<?php } ?>
我添加了 <a>
的 foreach 循环在里面。这可能有助于解释为什么此信息位于属性标记中。
最佳答案
我最终使用了 Eugene Glova 提供的 addslashes 解决方案,因为 Marc B 表示 htmlentities 不是这项工作的正确工具。
更正后的有效代码:
<?php foreach($item as $k => $v){ ?>
<a onClick="open_modal_now(<?= $v['id']; ?>,'<?= addslashes($v['title']); ?>',event);">Open Modal</a>
<?php } ?>
关于Javascript/PHP 撇号错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21392153/