本帖最后由 asia_deng 于 2014-07-07 15:48:48 编辑

解决方案 »

  1.   

    本帖最后由 xuzuning 于 2014-07-07 15:57:51 编辑
      

  2.   

    $str='[{\\"table\\":\\"a\\",\\"field\\":\\"value\\",\\"max\\":60,\\"min\\":null}]';
    $new=htmlspecialchars_decode($str);$new=str_replace('\\','',$new);$new1=json_decode($new,true);
    echo "<pre>";
    print_r($new1);
    echo "</pre>";
    Array
    (
        [0] => Array
            (
                [table] => a
                [field] => value
                [max] => 60
                [min] => 
            ))
      

  3.   


    还是不行哦
    但是我在php里直接写$json_string='[{\\&quot;table\\&quot;:\\&quot;a\\&quot;,\\&quot;field\\&quot;:\\&quot;value\\&quot;,\\&quot;max\\&quot;:60,\\&quot;min\\&quot;:null}]';是可以的,难道POST里的数据不一样?
      

  4.   

    这个方法试过了,并没有错,只是如果把
    $s = '[{\\&quot;table\\&quot;:\\&quot;a\\&quot;,\\&quot;field\\&quot;:\\&quot;value\\&quot;,\\&quot;max\\&quot;:60,\\&quot;min\\&quot;:null}]';
     换成
    $s=$_POST['json'];
    就不行了
    可以问题出在POST的数据上,
    但是在HTML里用js的eval把字符串转为json对象又能正常换行哦
      

  5.   

    echo base64_encode($_POST['json']);
    贴出结果
      

  6.   

    base64_encode后echo出来W3tcXCZhbXA7cXVvdDt0YWJsZVxcJmFtcDtxdW90OzpcXCZhbXA7cXVvdDtlcHFcXCZhbXA7cXVvdDssXFwmYW1wO3F1b3Q7ZmllbGRcXCZhbXA7cXVvdDs6XFwmYW1wO3F1b3Q7c3RhbmQ0XFwmYW1wO3F1b3Q7LFxcJmFtcDtxdW90O21heFxcJmFtcDtxdW90Ozo2MCxcXCZhbXA7cXVvdDttaW5cXCZhbXA7cXVvdDs6bnVsbH1dW10=W10=
      

  7.   

    看了base64的编码和解码知道了,要用两次html_entity_decode才行,谢谢版主大人,谢谢jam00,结账
      

  8.   

    HTML里看到的是<input type="hidden" name="epqsql" id="epqsql" value="[{&quot;table&quot;:&quot;epq&quot;,&quot;field&quot;:&quot;stand4&quot;,&quot;max&quot;:60,&quot;min&quot;:null}]">但是到了PHP就成了
    [{\\&amp;quot;table\\&amp;quot;:\\&amp;quot;epq\\&amp;quot;,\\&amp;quot;field\\&amp;quot;:\\&amp;quot;stand4\\&amp;quot;,\\&amp;quot;max\\&amp;quot;:60,\\&amp;quot;min\\&amp;quot;:null}](echo输出到html是看不到&amp;quot;这个的)
    所以要html_entity_decode两次
      

  9.   

    $s = 'W3tcXCZhbXA7cXVvdDt0YWJsZVxcJmFtcDtxdW90OzpcXCZhbXA7cXVvdDtlcHFcXCZhbXA7cXVvdDssXFwmYW1wO3F1b3Q7ZmllbGRcXCZhbXA7cXVvdDs6XFwmYW1wO3F1b3Q7c3RhbmQ0XFwmYW1wO3F1b3Q7LFxcJmFtcDtxdW90O21heFxcJmFtcDtxdW90Ozo2MCxcXCZhbXA7cXVvdDttaW5cXCZhbXA7cXVvdDs6bnVsbH1dW10=W10=';$s = base64_decode($s);
    $s = str_replace('\\', '', $s);
    $s = html_entity_decode($s);
    $s = html_entity_decode($s);
    echo $s, PHP_EOL;print_r(json_decode(substr($s, 0, -4), 1));
    [{"table":"epq","field":"stand4","max":60,"min":null}][]�
    Array
    (
        [0] => Array
            (
                [table] => epq
                [field] => stand4
                [max] => 60
                [min] => 
            ))自己看看就知道是怎么回事了
    其实这种一般性调试,是应该熟练掌握的
      

  10.   

    谢谢版主!
    我用PHP没多久,也没系统的学过,很多都还不会