代码之家  ›  专栏  ›  技术社区  ›  Mike

在CODEIGNITER中向JSON键添加空格和特殊字符

  •  1
  • Mike  · 技术社区  · 14 年前

    我有这样的json对象,站点运行的是codeigniter,这是最终的问题。

    var obj = {
    
          states : {
             'state' : {cities : ['city', 'city2', 'another']},
          }
       }
    

    错误。如果我去掉特殊字符和空格,它就可以正常工作了。

    我必须求助于其他方法吗?

    5 回复  |  直到 14 年前
        1
  •  1
  •   Mike    14 年前

    原来这个错误是由CI的输入库引起的。在第215行,您将找到\u clean\u input\u keys函数,它使用preg\u match()来禁止键中的某些字符。因此,当您发送JSON并将其作为数组接收时,php可能会抛出错误。

        2
  •  0
  •   Matthew    14 年前

    我不确定这是不是它,但这些字符是不允许在一个网址。也许你用的是 GET ? 尝试使用 POST .

        3
  •  0
  •   Moe Sweet    14 年前

    function fixjson($json){
    return '('.preg_replace('/^([^[{].*)$/', '[$1]', $json).')';}
    
    $json = fixjson($json);
    
        4
  •  0
  •   Community CDub    8 年前

    有些字符是不允许的。您可以在将它们插入JSON之前对它们进行urlencode()编码-请参阅 CodeIgniter - Disallowed Key Characters via $_GET

        5
  •  0
  •   Fer    14 年前
    1. 您应该随时对json进行编码。
    2. 如果您仍然需要URL中的那些字符,您可以在CI中配置这些字符,无需扩展任何内容或触及核心(在您的系统/应用程序/配置中)/配置.php文件):

      $config['allowed_uri_chars']='a-z 0-9~%。:124;-|=-@';