我正在尝试使用caracter"传递一个变量,但是"存在问题。 " Big Bang"。
<?php
echo $aux; //Hi! "Text" Text2'Text3
?>
//mysql_real_escape_string($aux);
addslashes($aux); //return Hi! \"Big Bang\" Text\'Text2
<a onclick="share('<?= $aux ?>')">Send</a>
答案 0 :(得分:0)
您应该做的是生成一个JavaScript字符串,因此您需要为JavaScript(json_encode()
)转义并删除对addslashes
的调用,该调用用于转义PHP。
<a onclick='share(<?= json_encode($aux) ?>)'>Send</a>
请注意,如果您的PHP字符串中有任何HTML实体,例如<
,它们将由HTML解析器解码。这是HTML编码引号的问题,它们被解码为JavaScript引用中的引号。
理想情况下,您可以将您的问题分开,以避免合并3种语言。
以下示例使用PHP中的数据(JavaScript for escape)
<a id='share-link'>Send</a>
<script>
document.getElementById('share-link').addEventListener('click', function() {
var shareContent = <?= json_encode($aux) ?>;
share(shareContent);
});
</script>
或者您可以将PHP中的数据嵌入到数据属性中(HTML转义)
<a id="share-link" data-share-content="<?= htmlentities($aux) ?>">Send</a>
<script>
document.getElementById('share-link').addEventListener('click', function() {
share( this.getAttribute("data-share-content") );
});
</script>
您甚至可以返回内联脚本(不推荐)
<a id="share-link"
onclick="share(this.getAttribute('data-share-content'))"
data-share-content="<?= htmlentities($aux) ?>"
>Send</a>