PHP-substr()错误或参数无效

时间:2018-06-27 07:32:12

标签: php json string substr

我在使用PHP版本7.0.13的PHP项目中工作

我最近正在处理JSON,我有一个需要解码为PHP的JSON文件,但是之前,我要解码JSON,我需要清理一些抽象字符串在JSON获得的文件中,使用substr()清理字符串以获取JSON。

当我编写代码时,像这样:

$jsonraw = "\"{ JSON should be here, later }\"";
$cutstart = strpos($jsonraw, "{");
$cutend = strrpos($jsonraw, "\"");
$jsonclean = substr($jsonraw, $cutstart, $cutend);
echo $jsonclean;

输出是这样的

  

{JSON应该在这里,以后}

但是当字符串是这样的

$jsonraw = "\"some abstract string to remove { JSON should be here, later }\"";

输出变成这样

  

{JSON应该在这里,以后}“

我们可以看到在字符串的最后有一个引号",我试图将$cutend减为$jsonclean = substr($jsonraw, $cutstart, --$cutend);,然后减为{{1} }

任何帮助,我都很感激。 对不起,我的英语不好

2 个答案:

答案 0 :(得分:2)

您可以使用preg_match从该字符串获取json:

$string = "some abstract string to remove { JSON should be here, later }";

preg_match('/\{.*\}/', $string, $match);

var_dump($match[0]);

结果将是:

string(30) "{ JSON should be here, later }"

答案 1 :(得分:1)

因为第三个参数是字符串的长度,所以您需要说长度是结束位置减去起始位置...

$jsonclean = substr($jsonraw, $cutstart, $cutend-$cutstart);