周梦康 发表于 2014-09-11 3703 次浏览

由于线上的过滤性质把代码转换为了实体:

{"title":"\\u6d4b\\u8bd5\\u6570\\u636e","description":"\\u6253\\u5f00\\u8bd5\\u8bd5","notification_basic_style":7,"open_type":1,"url":"http:\\/\\/www.baidu.com"}

我通过html_entity_decode转换回来之后如下

{"title":"\\u6d4b\\u8bd5\\u6570\\u636e","description":"\\u6253\\u5f00\\u8bd5\\u8bd5","notification_basic_style":7,"open_type":1,"url":"http:\\/\\/www.baidu.com"}

代码演示:

//这样转已有的字符串,线上没有问题
var_dump(json_decode('{"title":"\\u6d4b\\u8bd5\\u6570\\u636e","description":"\\u6253\\u5f00\\u8bd5\\u8bd5","notification_basic_style":7,"open_type":1,"url":"http:\\/\\/www.baidu.com"}',true));
//但是这个就出现了问题(而实际上面的字符串就是通过html_entity_decode获取的)
$a = "{"title":"\\u6d4b\\u8bd5\\u6570\\u636e","description":"\\u6253\\u5f00\\u8bd5\\u8bd5","notification_basic_style":7,"open_type":1,"url":"http:\\/\\/www.baidu.com"}";
$b = json_decode(html_entity_decode($a),true);

结果是:

array(5) {
  ["title"]=>
  string(24) "\u6d4b\u8bd5\u6570\u636e"
  ["description"]=>
  string(24) "\u6253\u5f00\u8bd5\u8bd5"
  ["notification_basic_style"]=>
  int(7)
  ["open_type"]=>
  int(1)
  ["url"]=>
  string(22) "http:\/\/www.baidu.com"
}

而我期望的结果应该是和线下的一致,也就是:

array(5) {
  ["title"]=>
  string(12) "测试数据"
  ["description"]=>
  string(12) "打开试试"
  ["notification_basic_style"]=>
  int(7)
  ["open_type"]=>
  int(1)
  ["url"]=>
  string(20) "http://www.baidu.com"
}

👇 下面是我的公众号,高质量的博文我会第一时间同步到公众号,给个关注吧!

评论列表