0

这是我的第一篇文章,我希望我做的一切都很好,问我的问题:我想创建一个函数来检测字符串是否是有效的 JSON。我已经在这里阅读了很好的主题(在 PHP 中检查字符串是否为 JSON 的最快方法?)但我想为第一个字符添加检查功能,因为此函数将获得大量非 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;
    }

你能帮我解决这个问题吗,因为它开始让我发疯了?先感谢您!

4

2 回答 2

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;
于 2013-05-30T15:35:39.877 回答
0

json_encode returns false if the string is not valid Json.

function isValidJson($string) {
    if (json_encode($string) === false) {
        return false;
    }
    return true;
}
于 2013-05-30T15:34:47.720 回答