php 的 json_decode 无法识别  现在想把 所有的key值加引号
正则匹配如何写呢?

解决方案 »

  1.   

    取回来当string处理吧,
      

  2.   

    $s =<<< JS
    {a:123, b  :"abc"}
    JS;$s = preg_replace_callback('/(?<=[{,])[^:]+/', function($m) {
      return '"' . trim($m[0], '\'" ') . '"';
      }, $s);
    print_r(json_decode($s, 1));Array
    (
        [a] => 123
        [b] => abc
    )
      

  3.   


    <?php  
    /** 兼容key没有双引括起来的JSON字符串解析 
    * @param  String  $str JSON字符串 
    * @param  boolean $mod true:Array,false:Object 
    * @return Array/Object 
    */  
    function ext_json_decode($str, $mode=false){  
        if(preg_match('/\w:/', $str)){  
            $str = preg_replace('/(\w+):/is', '"$1":', $str);  
        }  
        return json_decode($str, $mode);  
    }  
      
    $str = '{"name":"fdipzone"}';  
    var_dump(ext_json_decode($str, true)); // array(1) { ["name"]=> string(8) "fdipzone" }  
      
    $str1 = '{name:"fdipzone"}';  
    var_dump(ext_json_decode($str1, true)); // array(1) { ["name"]=> string(8) "fdipzone" }  
    ?>  
    参考:http://blog.csdn.net/fdipzone/article/details/39307223