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

标签 php javascript arrays filter sanitization

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

  • 正文
  • 空格
  • 多行
  • HTML 标签
  • 单引号和双引号
  • 斜线
  • 等等...

我当前的代码是这样做的:<?php $data = addslashes($content_of_input); ?>

不久之后...

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

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

最佳答案

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

<script>
    var data = <?php echo json_encode($data); ?> ;
</script>

关于php - 如何为 Javascript array() 使用准备 PHP 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12317140/

相关文章:

Javascript:确定未知数组长度并动态映射

javascript - 如何最有效地在 javascript 中仅包含两种类型的项目 0、1 的数组中查找项目的索引

php - 如何使用 CURL 将此类 PHP 代码翻译成 C/C++?

javascript - Ajax 成功 : {return false;}

arrays - 将数组的每个对应元素转换为r中的向量

javascript - 如何将类添加到div的父子

javascript - 在javascript中通过参数将全局变量传递给函数有什么用?

PHP : checkboxes and name issue

php - Centos PHP 服务器错误

php - 从数组创建mysql表