21,886
社区成员
发帖
与我相关
我的任务
分享
<input type="hidden" name="epqsql" id="epqsql" value="[{"table":"epq","field":"stand4","max":60,"min":null}]">
[{\\"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 = '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] =>
)
)
自己看看就知道是怎么回事了
其实这种一般性调试,是应该熟练掌握的
<input type="hidden" name="epqsql" id="epqsql" value="[{"table":"epq","field":"stand4","max":60,"min":null}]">
但是到了PHP就成了
[{\\"table\\":\\"epq\\",\\"field\\":\\"stand4\\",\\"max\\":60,\\"min\\":null}]
(echo输出到html是看不到"这个的)
所以要html_entity_decode两次W3tcXCZhbXA7cXVvdDt0YWJsZVxcJmFtcDtxdW90OzpcXCZhbXA7cXVvdDtlcHFcXCZhbXA7cXVvdDssXFwmYW1wO3F1b3Q7ZmllbGRcXCZhbXA7cXVvdDs6XFwmYW1wO3F1b3Q7c3RhbmQ0XFwmYW1wO3F1b3Q7LFxcJmFtcDtxdW90O21heFxcJmFtcDtxdW90Ozo2MCxcXCZhbXA7cXVvdDttaW5cXCZhbXA7cXVvdDs6bnVsbH1dW10=W10=
$s = '[{\\"table\\":\\"a\\",\\"field\\":\\"value\\",\\"max\\":60,\\"min\\":null}]';
换成
$s=$_POST['json'];
就不行了
可以问题出在POST的数据上,
但是在HTML里用js的eval把字符串转为json对象又能正常换行哦
$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] =>
)
)$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] =>
)
)