在JavaScript或PHP中转义撇号

时间:2013-04-04 15:07:15

标签: php javascript escaping

我在PHP中有一个foreach循环:

var circle_<?php echo $x; ?> = '<?php echo $c; ?>';

它在JavaScript中返回:

var circle_0 = '<p class="medium">With us, you can customize more than just a closet.</p>';

var circle_1 = '<p class="medium">We are boutique condo builders who love what we do.</p>';

var circle_2 = '<p class="medium">who says condos can't be spacious?<br/></p>';

如您所见,circle_2在字符串中有一个撇号,因此会破坏脚本:

  

未捕获的SyntaxError:意外的标记ILLEGAL

我将使用什么过滤器来解决此问题(PHP或JavaScript)?

3 个答案:

答案 0 :(得分:7)

使用PHP,您可以尝试:

  <?php echo str_replace("'", "\'",$c);

答案 1 :(得分:3)

PHP addslashes()函数将帮助您:http://php.net/manual/en/function.addslashes.php

答案 2 :(得分:3)

请勿使用foreach循环,并且不要在此处使用addslashes或任何其他错误答案。

编写如下代码:

echo "var circle = ".json_encode($carray).';';

其中$carray是您当前正在使用foreach()进行循环以获取$x$c的数组。

这将创建一个如下所示的Javascript数组:

var circle = [
    '\'<p class="medium">With us, you can customize more than just a closet.</p>\'',
    '\'<p class="medium">We are boutique condo builders who love what we do.</p>\'',
    '\'<p class="medium">who says condos can't be spacious?<br/></p>\''
];

然后,您可以访问circle[0]circle[1]等元素

希望有所帮助。