使用双引号传递参数

时间:2014-12-31 13:20:22

标签: javascript php variables parameters quote

我正在尝试使用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>

1 个答案:

答案 0 :(得分:0)

您应该做的是生成一个JavaScript字符串,因此您需要为JavaScript(json_encode())转义并删除对addslashes的调用,该调用用于转义PHP。

<a onclick='share(<?= json_encode($aux) ?>)'>Send</a>

请注意,如果您的PHP字符串中有任何HTML实体,例如&lt;,它们将由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>