phpcoding特殊字符

时间:2016-08-11 18:38:13

标签: javascript php

当我加载一个php页面时,我把一个javascript函数,一个名字。当这个字符串有像'。

这样的特殊字符时,就会出现问题

在这里,我粘贴点击事件的代码:

print "%d" % (s)

我认为函数 htmlspecialchars 以某种方式编码字符串但结果是:

print "%06d" % (int(s))

可以看出,在第二个参数中,名称包含'和'之类的字符。

我该如何避免这种情况?

1 个答案:

答案 0 :(得分:1)

永远不要将PHP中的文本直接输出到Javascript上下文中。正如您所发现的那样,非常很容易生成JS语法错误。

始终使用json_encode:例如鉴于此

<?php    $foo = 'bar';    ?>

<script>
   var badly_broken = <?php echo $foo ?>;
   var working_fine = <?php echo json_encode($foo); ?>;
</script>

你最终会

<script>
    var badly_broken = bar;   // oops - undefined variable "bar"
    var working_fine = "bar";
</script>

请注意,如果您要将JS输出到HTML属性中,则不仅需要生成有效的Javascript,还必须输出有效的HTML AS WELL

<?php $foo = array('bar' => 'baz'); ?>

<a onclick="brokenCall(<?echo json_encode($foo) ?>)">
<a onclick="workinCall(<? echo htmlspecialchars(json_encode($foo)) ?>)">

产生

<a onclick="brokenCall({"bar":"baz"})">
           ^--start attribute
                        ^--end attribute - ruhroh

<a onclick="workingCall({&quot;bar&quot;:&quot;baz&quot;}")>