laminas/laminas-validator
Laminas Validator provides flexible, reusable validation rules for PHP applications. Includes built-in validators, input filtering/validation chains, and tools for validating common data types like emails, URLs, numbers, strings, and more.
Laminas\Validator\IsJsonString allows you to validate whether a given value is a string that will be successfully decoded by json_decode.
$validator = new Laminas\Validator\IsJsonString();
$input = '{"some":"json"}';
if ($validator->isValid($input)) {
// $input can be successfully decoded
} else {
// $input is not a valid JSON string
}
json_decode accepts numeric strings representing integers and floating point numbers, booleans, arrays and objects.
You can restrict what is considered valid input using the allow option of the validator.
use Laminas\Validator\IsJsonString;
$validator = new IsJsonString([
'allow' => IsJsonString::ALLOW_ALL ^ IsJsonString::ALLOW_BOOL,
]);
$validator->isValid('true'); // false
The allow option is a bit mask of the ALLOW_* constants in IsJsonString:
IsJsonString::ALLOW_INT - Accept integer such as 1IsJsonString::ALLOW_FLOAT - Accept floating-point value such as 1.234IsJsonString::ALLOW_BOOL - Accept true and falseIsJsonString::ALLOW_ARRAY - Accept JSON arrays such as ["One", "Two"]IsJsonString::ALLOW_OBJECT - Accept JSON objects such as {"Some":"Object"}IsJsonString::ALLOW_ALL - A convenience constant allowing all of the above (Also the default).If you wish to restrict the nesting level of arrays and objects that are considered valid, the validator accepts a maxDepth option. The default value of this option is 512 - the same default value as json_decode.
$validator = new Laminas\Validator\IsJsonString(['maxDepth' => 2]);
$validator->isValid('{"nested": {"object: "here"}}'); // false
How can I help you explore Laravel packages today?