这是我的第一篇文章,我希望我做的一切都可以问我的问题: 我想创建一个函数来检测字符串是否是有效的JSON。我已经在这里阅读了很好的主题(Fastest way to check if a string is JSON in PHP?)但是我想为第一个字符添加检查功能,因为这个函数将获得大量的非JSON输入。然而它一直在失败,我不知道为什么......
这是我到目前为止写的函数:
function isJson($string){
$string = trim($string);
vardump($string); //for debugging
if($string[0]!='{'||$string[0]!='['){ //check for first char
echo("{$string[0]}!={ OR {$string[0]}!=["); //this actually prints {!={ OR {!=[ every time it comes across valid JSON...
return false;
}
if(json_decode($string)==true)return true;
else return false;
}
请你帮我这个,因为它开始让我疯了吗? 提前谢谢!
答案 0 :(得分:2)
我只会使用json_decode。
function isJson($string)
{
return (json_decode($string) !== null);
}
但是如果你坚持检查第一个字符,那么我会使用substr。
我相信你的if语句应该使用&&
而不是||
if ($string[0] != '{' && $string[0] != '['){ .....
或类似的东西
if (!in_array(substr($string, 0, 1), array('{', '[')))
return false;
答案 1 :(得分:0)
如果字符串无效Json,则json_encode返回false。
function isValidJson($string) {
if (json_encode($string) === false) {
return false;
}
return true;
}