php 解析HTML post过来的json字符串 本帖最后由 asia_deng 于 2014-07-07 15:48:48 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本帖最后由 xuzuning 于 2014-07-07 15:57:51 编辑 $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] => )) 还是不行哦但是我在php里直接写$json_string='[{\\"table\\":\\"a\\",\\"field\\":\\"value\\",\\"max\\":60,\\"min\\":null}]';是可以的,难道POST里的数据不一样? 这个方法试过了,并没有错,只是如果把$s = '[{\\"table\\":\\"a\\",\\"field\\":\\"value\\",\\"max\\":60,\\"min\\":null}]'; 换成$s=$_POST['json'];就不行了可以问题出在POST的数据上,但是在HTML里用js的eval把字符串转为json对象又能正常换行哦 echo base64_encode($_POST['json']);贴出结果 base64_encode后echo出来W3tcXCZhbXA7cXVvdDt0YWJsZVxcJmFtcDtxdW90OzpcXCZhbXA7cXVvdDtlcHFcXCZhbXA7cXVvdDssXFwmYW1wO3F1b3Q7ZmllbGRcXCZhbXA7cXVvdDs6XFwmYW1wO3F1b3Q7c3RhbmQ0XFwmYW1wO3F1b3Q7LFxcJmFtcDtxdW90O21heFxcJmFtcDtxdW90Ozo2MCxcXCZhbXA7cXVvdDttaW5cXCZhbXA7cXVvdDs6bnVsbH1dW10=W10= 看了base64的编码和解码知道了,要用两次html_entity_decode才行,谢谢版主大人,谢谢jam00,结账 HTML里看到的是<input type="hidden" name="epqsql" id="epqsql" value="[{"table":"epq","field":"stand4","max":60,"min":null}]">但是到了PHP就成了[{\\&quot;table\\&quot;:\\&quot;epq\\&quot;,\\&quot;field\\&quot;:\\&quot;stand4\\&quot;,\\&quot;max\\&quot;:60,\\&quot;min\\&quot;:null}](echo输出到html是看不到&quot;这个的)所以要html_entity_decode两次 $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] => ))自己看看就知道是怎么回事了其实这种一般性调试,是应该熟练掌握的 谢谢版主!我用PHP没多久,也没系统的学过,很多都还不会 插入语句为什么只有两个字段插入进去? fseek的问题 唠叨贴 static public function 与 public function 有什么区别啊 字符串分割问题 简单的留言版显示问题 为什么我安装DZ论坛只能用root用户装,其它用户都不行 PHP如何向Access数据库中插入时期时间值。 棘手问题:新装的linux8。0,php+mysql+apache都装了,怎么phpmyadmin执行保错!帮我! 新手求一个简单的正则表达式,大大们帮帮忙.谢谢 成员变量问题 php 伪静态问题
$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] =>
))
还是不行哦
但是我在php里直接写$json_string='[{\\"table\\":\\"a\\",\\"field\\":\\"value\\",\\"max\\":60,\\"min\\":null}]';是可以的,难道POST里的数据不一样?
$s = '[{\\"table\\":\\"a\\",\\"field\\":\\"value\\",\\"max\\":60,\\"min\\":null}]';
换成
$s=$_POST['json'];
就不行了
可以问题出在POST的数据上,
但是在HTML里用js的eval把字符串转为json对象又能正常换行哦
贴出结果
[{\\&quot;table\\&quot;:\\&quot;epq\\&quot;,\\&quot;field\\&quot;:\\&quot;stand4\\&quot;,\\&quot;max\\&quot;:60,\\&quot;min\\&quot;:null}](echo输出到html是看不到&quot;这个的)
所以要html_entity_decode两次
$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] =>
))自己看看就知道是怎么回事了
其实这种一般性调试,是应该熟练掌握的
我用PHP没多久,也没系统的学过,很多都还不会