php解析HTMLpost过来的json字符串
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php解析HTMLpost过来的json字符串,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4049字,纯文字阅读大概需要6分钟。
内容图文
![php解析HTMLpost过来的json字符串](/upload/InfoBanner/zyjiaocheng/200/c284664cf6af4d55b4577a634b7eb294.jpg)
这是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没多久,也没系统的学过,很多都还不会
内容总结
以上是互联网集市为您收集整理的php解析HTMLpost过来的json字符串全部内容,希望文章能够帮你解决php解析HTMLpost过来的json字符串所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。