如何准备用于Javascript数组()的PHP变量?

如何准备用于Javascript数组()的PHP变量?,php,javascript,arrays,filter,sanitization,Php,Javascript,Arrays,Filter,Sanitization,假设我们有输入字段或文本区域,用户可以在其中放置任何内容。这意味着用户可以将: 正文 空白 多行 HTML标记 单引号和双引号 砍 等等 我的当前代码执行以下操作: 不久之后 <?php $php_generate_javascriptArray .=' javascriptArray[0] ="'.$data.'"; '; ?> <script> javascriptArray = []; <?php echo

假设我们有输入字段或文本区域,用户可以在其中放置任何内容。这意味着用户可以将:

  • 正文
  • 空白
  • 多行
  • HTML标记
  • 单引号和双引号
  • 等等
我的当前代码执行以下操作:

不久之后

<?php
    $php_generate_javascriptArray .='
        javascriptArray[0] ="'.$data.'";
    ';
?>
<script>
    javascriptArray = [];
    <?php echo $php_generate_javascriptArray; ?>
</script>

javascriptArray=[];
不幸的是,添加斜杠是不够的——当用户将多行或HTML链接放入其中时,Javascript会中断。是否有任何方法可以防止这种情况,并且仍然允许Javascript数组包含链接、多行、HTML标记?我正在寻找一些通用过滤器。

将PHP数据结构(或字符串或数字)转换为适当的JavaScript数据结构,同时使其能够安全地注入HTML文档中的脚本元素(通过转义斜杠)


var数据=;
将PHP数据结构(或字符串或数字)转换为适当的JavaScript数据结构,同时使其能够安全地注入HTML文档中的脚本元素(通过转义斜杠)


var数据=;
使用PHP函数 或者需要更高级的保护

我通常使用urlencode,在Javascript端使用unescape对URL格式数据进行解码。

使用PHP函数 或者需要更高级的保护


我通常使用urlencode,在Javascript端使用unescape对URL格式数据进行解码。

出于某种原因,在上面的示例中,添加
json\u encode()
而不是
addslashes()
即使使用纯文本,也会完全破坏Javascript。也许是因为我使用了双引号?@Paul-Yes,
json\u encode
将输出一个文本(字符串、数组、对象等)。您需要直接输出它,而不是用引号(它可能包含引号)将其包装成字符串。我需要使用PHP
for()
生成非常非常长的多维Javascript
array()
。上面的例子是我唯一的选择。在我的问题中,我简化了它。使用上面的示例有什么方法可以做到这一点吗?使用
for()
生成一个非常长的多维PHP数组。编辑:好的,我已经测试过了,到目前为止还可以。由于某种原因,在上面的例子中,添加
json\u encode()
而不是
addslashes()
即使使用纯文本,也会完全破坏Javascript。也许是因为我使用了双引号?@Paul-Yes,
json\u encode
将输出一个文本(字符串、数组、对象等)。您需要直接输出它,而不是用引号(它可能包含引号)将其包装成字符串。我需要使用PHP
for()
生成非常非常长的多维Javascript
array()
。上面的例子是我唯一的选择。在我的问题中,我简化了它。使用上面的示例有什么方法可以做到这一点吗?使用
for()
生成一个非常长的多维PHP数组。编辑:好的,我测试过了,到目前为止还可以。
<script>
    var data = <?php echo json_encode($data); ?> ;
</script>