You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中带string(100)前缀的JSON字符串如何转为常规字符串?

搞定带string(xxx)前缀的JSON解析问题

嘿,这个场景我太熟悉了!你看到的string(100) "{"data":{"type":"campaign-folders","id":"d208f3171a","attributes":{"name":"My Folder"}}}",其实是PHP里var_dump()函数的输出格式——它会先显示变量的类型(string)、长度(100),再输出实际的字符串内容。

分两种情况来处理:

情况1:只是查看输出带前缀,实际变量本身就是JSON字符串

如果你的变量本身已经是纯JSON字符串,只是用var_dump()查看时才显示这个前缀,那直接用json_decode()解析就行:

// 假设你的变量是$jsonVar
$data = json_decode($jsonVar, true); // true表示转成关联数组,不加则是对象
print_r($data);

情况2:变量实际内容就包含string(xxx) "..."前缀

如果你的变量真的把string(100)和前后引号都包含进去了,那得先把中间的JSON内容提取出来,给你两个靠谱的方法:

方法1:简单字符串截取

利用固定格式的特点,找到第一个双引号的位置,截取到末尾的前一个字符(去掉最后一个引号):

$rawString = 'string(100) "{"data":{"type":"campaign-folders","id":"d208f3171a","attributes":{"name":"My Folder"}}}"';
// 定位第一个双引号,然后截取后面的内容到倒数第二位
$jsonString = substr($rawString, strpos($rawString, '"') + 1, -1);
// 解析JSON
$data = json_decode($jsonString, true);
print_r($data);

方法2:正则表达式提取(更灵活)

如果前缀里的数字可能变化,用正则匹配更稳妥,不管长度是多少都能精准提取中间的JSON:

$rawString = 'string(100) "{"data":{"type":"campaign-folders","id":"d208f3171a","attributes":{"name":"My Folder"}}}"';
// 匹配开头的string(数字) 双引号,然后捕获中间的所有内容
preg_match('/^string\(\d+\) "(.*)"$/', $rawString, $matches);
if (isset($matches[1])) {
    $jsonString = $matches[1];
    $data = json_decode($jsonString, true);
    print_r($data);
}

小提醒

如果JSON内容里本身包含转义的双引号(比如"name":"He said \"Hello\""),要确保原始字符串的转义是正确的,不然截取或正则可能会出错哦!

内容的提问来源于stack exchange,提问作者Rafi Ramadhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:02:41