今天在研究写一个typecho数据转halo插件时

因为需要先把typecho数据转成json,才能导入到halo,

我最初是直接用的:

echo json_encode($arry);

结果返回结果如下:

"name": "\u9ed8\u8ba4\u5206\u7c7b",
这里本应该是中文的,结果中文被unicode编码了。

http:// ---- 这里本应该是http,结果所有的斜杠都被转义了。

为了方便处理数据,接受的数据中文必须是不被unicode编码,斜杠也不需要被转义。

先是百度了一波,百度无果后,咨询了下好友@wibus 收到启发,又百度了一波,找到了相关解决办法的文章:
PHP函数:json_encode中文unicode编码和斜杠转义 解决方法 - 付杰博客 (fujieace.com)

解决方法

先给大家说一点关于php中json_encode的知识点,相信,大家都知道:

 
php中json_encode有几个常量,例如:

JSON_UNESCAPED_UNICODE //中文不转为unicode

JSON_UNESCAPED_SLASHES //不转义反斜杠

......

 
这里有两种方法,具体都给大家来简单说说,以我这里为示例,让两个同时生效的方法如下:

 

第一种方法

在这俩参数中间加个“|”,代码如下:

 <?php
echo json_encode($array,JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);

第二种方法

由于 JSON_UNESCAPED_UNICODE 和 JSON_UNESCAPED_SLASHES 都是常量;

JSON_UNESCAPED_UNICODE = 256

JSON_UNESCAPED_SLASHES = 64

JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320

 

两个同时生效代码可以这样用,如下:

 <?php
echo json_encode($array,320);

果然真就解决了~
最终效果:

测试了一波halo导入数据,分类数据成功导入~

顺便透露一下,typecho数据转halo插件完成之时,即为转halo之时~
再见 typecho,hello halo!

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3b3psvi2ezi8c