转义php变量中所有引号和重音javascript

时间:2019-05-07 13:10:41

标签: javascript php escaping quotes

我有此代码:

<html>
<?php
$var="\'quotes\" àccènts";  //  'quotes" àccènts
?>
<button onclick="fun('<?php echo $var ?>');">click me</button>
</html>

但是当我单击时,在控制台中出现“ Uncaught SyntaxError:Invalid or意外令牌”

我尝试过:

<button onclick="fun('<?php echo $var ?>');">click me</button>
<?php
function escape($var)
{
    $var=str_replace("'","\\'",$var);
    $var=str_replace("\"","&quot;",$var);
    $var=trim(preg_replace("/\s+/"," ",$var));
    return $var
}
?>

但是口音变成了未知字符,我该如何用内联html解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以解决它。例如

<script>
function fun2()
{
   return fun(<?php echo json_encode($var); ?>);
}
</script>

<button onclick="fun2();">click me</button>

如果您想多次执行此操作,例如在一个字符串列表中的循环中, 您也可以解决此问题(除非您想破坏原始的php字符串),方法是:

<script>
// assuming an array of string variables with quotes and accents
var strings = <?php echo json_encode($strings); ?>;
</script>

<?php for($i=0,$l=count($strings); $i<$l; $i++) { ?>
<button onclick="fun(strings[<?php echo $i; ?>]);">Click me!</button>
<?php } ?>