在重制 Snapic Plus 过程中,需要把 JSON 字符串转换为数组,于是构建了以下函数: function jsonStringToArray($jsonString, $associative = true) { if (!is_string($jsonString) || empty(trim($jsonString))) { return $associative ? [] : null; } $decodedData = @json_decode($jsonString, $associative); if (json_last_error() === JSON_ERROR_NONE) { return $decodedData; } return $associative ? [] : null; } $data = '{"last_update_timestamp":"1760160739","total_media_count":576}'; jsonStringToArray($data); // 转为数组 jsonStringToArray($data, false); // 转为对象 事后细想,这是常用的功能,Typecho 或许有内置的,果然,在 var/Typecho/Common.php 文件里找到了: $data = '{"last_update_timestamp":"1760160739","total_media_count":576}'; Json::decode($data); // 转为对象 Json::decode($data, true); // 转为数组 这样的现象还挺普遍,由于官方提供的使用文档略显粗犷,主题、插件的开发者们常常会忽略这些自带的方法、组件等,这么一来,无形中增加了制作的时间开销,也存在升级新版 Typecho 时,主题、插件代码失效报错的情况,比如(这里)提及的偏方。此外,不少主题会使用诸如以下的标记方式对文章内容进行替换,以输出自定义的丰富版式,但是,由于官方似乎没有制定统一的开发规范,导致不同开发者使用了不同风格去实现相似的渲染结果,致使在切换主题时,无法正确兼容适配。 [photos][/photos] // 开发者 A [fotos][/fotos] // 开发者 B
Lopwon