当我把它放入json检查器时,它是一个有效的json,但是php中的json_decode给出了一个解码错误。 json partial:
"regex":{
"validator":"Regex",
"options":{
"pattern":"\/^[a-zA-Z\\.\\- ]+$\/",
"messages":"Please use letters, spaces, period and dashes only"
}
}
我看了Regular expression messing up json_decode();,但这对我没有帮助。
谢谢!
以下是整个json:
答案 0 :(得分:2)
这很有效。
<?php
error_reporting(E_ALL);
$json = '{"regex":{
"validator":"Regex",
"options":{
"pattern":"\\/^[a-zA-Z\\\\.\\\\- ]+$\\/",
"messages":"Please use letters, spaces, period and dashes only"
}
}
}';
var_dump(json_decode($json, true));
?>
注意整个JSON字符串是用{}
封装的,并且还注意到所有反斜杠都是用另一个反斜杠转义的(所以正则表达式需要\我们有\\)。这很完美。
注意更新:
只需str_replace("\\", "\\\\", $json);
,您就可以了。此外,如果以表格提交,应该没问题。我刚刚通过HTML表单提交了您的整个JSON字符串,并将其直接发送到json_decode
(没有转义)并且它有效。这是因为浏览器已经转义了反斜杠。很长一段时间我们没有在PHP中定义字符串,它将被转义(至少反斜杠)