与 Typecho 相关
在重制 Snapic Plus 过程中,需要把 JSON 字符串转换为数组,于是构建了以下函数:
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