如何为Javascript array()使用准备PHP变量?

Ata*_*adj 1 javascript php arrays sanitization filter

假设我们有输入字段或textarea,用户可以放置任何内容.这意味着用户可以放在那里:

  • 文本
  • 白色空间
  • 多线
  • HTML标签
  • 单引号和双引号
  • 斜杠
  • 什么......

我目前的代码执行此操作: <?php $data = addslashes($content_of_input); ?>

不久之后......

<?php
    $php_generate_javascriptArray .='
        javascriptArray[0] ="'.$data.'";
    ';
?>
<script>
    javascriptArray = [];
    <?php echo $php_generate_javascriptArray; ?>
</script>
Run Code Online (Sandbox Code Playgroud)

遗憾的是,添加斜杠是不够的 - 当用户将多行或HTML链接放入其中时,Javascript会中断.有没有办法防止这种情况,仍然允许Javascript数组包含LINK,MULTIPLE LINES,HTML TAGS?我正在寻找一些通用的过滤器.

Que*_*tin 6

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

<script>
    var data = <?php echo json_encode($data); ?> ;
</script>
Run Code Online (Sandbox Code Playgroud)