您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php 解析HTML post过来的json字符串

2025/11/1 21:03:57发布18次查看
我在js里把一个json对象转为json字符串,然后放到一个隐含的input里提交到php
这是html的部分


php里获取到的字符串是:
[{\\"table\\":\\"a\\",\\"field\\":\\"value\\",\\"max\\":60,\\"min\\":null}]
对字符串处理
$json_string=$_post['json'];$json=htmlspecialchars_decode($json_string);print_r(json_decode($json));//结果是空的
换一下
$json=stripslashes(htmlspecialchars_decode($json_string));print_r(json_decode($json));//结果还是空的
再改一下
$json=stripslashes(stripslashes(htmlspecialchars_decode($json_string)));print_r(json_decode($json));//好吧,结果还是空的
回复讨论(解决方案) 也真难为你了,做那么复杂的编码处理 $s = '[{\\"table\\":\\"a\\",\\"field\\":\\"value\\",\\"max\\":60,\\"min\\":null}]';$s = html_entity_decode($s);$s = stripslashes($s);print_r(json_decode($s, 1));

array( [0] => array ( [table] => a [field] => value [max] => 60 [min] => ))

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

;
array
(
[0] => array
(
[table] => a
[field] => value
[max] => 60
[min] =>
)
)
也真难为你了,做那么复杂的编码处理 $s = '[{\\"table\\":\\"a\\",\\"field\\":\\"value\\",\\"max\\":60,\\"min\\":null}]';$s = html_entity_decode($s);$s = stripslashes($s);print_r(json_decode($s, 1));

array( [0] => array ( [table] => a [field] => value [max] => 60 [min] => ))

还是不行哦
但是我在php里直接写$json_string='[{\\"table\\":\\"a\\",\\"field\\":\\"value\\",\\"max\\":60,\\"min\\":null}]';是可以的,难道post里的数据不一样?
$str='[{\\"table\\":\\"a\\",\\"field\\":\\"value\\",\\"max\\":60,\\"min\\":null}]';$new=htmlspecialchars_decode($str);$new=str_replace('\\','',$new);$new1=json_decode($new,true);echo ;print_r($new1);echo

;
array
(
[0] => array
(
[table] => a
[field] => value
[max] => 60
[min] =>
)
)
这个方法试过了,并没有错,只是如果把
$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=
echo base64_encode($_post['json']);
贴出结果
看了base64的编码和解码知道了,要用两次html_entity_decode才行,谢谢版主大人,谢谢jam00,结账
html里看到的是


但是到了php就成了
[{\\"table\\":\\"epq\\",\\"field\\":\\"stand4\\",\\"max\\":60,\\"min\\":null}]
(echo输出到html是看不到"这个的)
所以要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没多久,也没系统的学过,很多都还不会
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product