您应该做的是生成一个 JavaScript 字符串,因此您需要为 JavaScript (json_encode()) 转义并删除对 addslashes 的调用,该调用用于转义 PHP。
<a onclick='share(<?= json_encode($aux) ?>)'>Send</a>
请注意,如果您的 PHP 字符串中有任何 HTML 实体,例如 &lt;,它们将被 HTML 解析器解码。这就是 HTML 编码引号的问题,它们被解码为 JavaScript 引号中的引号。
理想情况下,您应该将关注点分开以避免将 3 种语言结合起来。
以下示例使来自 PHP 的数据在 JavaScript 中可用(JavaScript 转义)
<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>