我在使用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} }
任何帮助,我都很感激。 对不起,我的英语不好
答案 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);