我正在尝试验证输入是否有效json。但是它返回“123”的成功作为输入。这似乎没有效果,或者至少在我需要的方面无效。
您是否知道改进json输入验证的方法?
public function rules()
{
switch($this->method()) {
case "GET":
return [];
case "DELETE":
return [];
default:
return [
'name' => 'required',
'templatestring' => 'required|JSON'
];
}
}
答案 0 :(得分:3)
123
是基于较新RFC 7159的有效JSON。
如果您尝试根据RFC 4627验证JSON字符串,则应该使用regex
验证规则。例如:
$data = [
'name' => 'test',
'templatestring' => '123'
];
$validator = Validator::make($data, [
'name' => 'required',
'templatestring' => 'required|regex:/[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]/'
]);
// With `123` this returns true (as it fails).
// If you set $data['templatestring'] = '{"test": 123}' this returns false.
return $validator->fails();
正则表达式取自this answer。