PHP失败与松散的字符串比较?

时间:2013-05-30 15:26:29

标签: php json string-comparison

这是我的第一篇文章,我希望我做的一切都可以问我的问题: 我想创建一个函数来检测字符串是否是有效的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;
    }

请你帮我这个,因为它开始让我疯了吗? 提前谢谢!

2 个答案:

答案 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;
}