如何为Javascript数组()的使用准备PHP变量

How to prepare PHP variable for Javascript array() use?

本文关键字:变量 PHP Javascript 数组      更新时间:2023-09-26

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

  • 文本
  • 空白
  • 多线
  • 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数据结构,同时使其可以安全地注入HTML文档中的脚本元素(通过转义斜杠)。

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

使用PHP函数urlencode(…)或者需要更高级保护的base64_encode(…)。

我通常使用urlencode,在Javascript方面使用unescape来解码URL格式的数据。