我有一些问题,想要求一些帮助。
我的一些内容编辑器会添加我认为被视为unicode字符的字符。一个字符是省略号三个点,它占用一个空格而不是传统的......(计为3个字符)。另一个是撇号'而不是'这也和我有关。
以下是我正在做的粗略代码:
//Retrieve a list of content items. Each content item is an array, and all of the content items are inside their own array.
$myArray = _contentService->GetContentArray();
//so now $myArray is a two-dimensional array
//One record inside the above array contains a key called 'description' whose value contains the ellipsis
die(json_encode($myArray, JSON_UNESCAPED_UNICODE ));
这不会产生任何结果(屏幕是白色的)。
die(json_encode($myArray)); //also produces a white screen.
所以最终的结果是我试图在二维数组上运行json_encode。当数组中每个数组的描述列由非unicode字符组成时,它可以正常工作并输出我的JSON数组。
当使用省略号或'时,整个屏幕变为白色而没有输出。
手册说你只需要为json_encode使用UTF-8编码,但是它也说更高版本支持JSON_UNESCAPED_UNICODE,但是这不会简单地将我的省略号转换为类似\ uxxxx吗?有没有办法真正保留省略号?
我尝试了StackOverflow的几个推荐,但在所有情况下都没有得到任何结果。我删除省略号的那一刻它工作正常。
我的想法是正确的,因为它的unicode会丢掉所有东西吗?
非常感谢你!
答案 0 :(得分:1)
这是一个丑陋的解决方案,但它应该有效;您可以手动将数组格式化并输出为JSON,而不是使用PHP函数对其进行编码。
echo '{';
foreach($myArray as $key => $value){
if(is_array($value)){
echo '"'.$key.'": [';
foreach($value as $k => $v){
echo '"'.$k.'":"'.$v.'",' . PHP_EOL;
}
echo ']';
}else{
echo '"'.$key.'":"'.$value.'",' . PHP_EOL;
}
}
echo '}';
应该按原样输出,结构为JSON。无论最后处理这个JSON是什么,可能不得不在之后处理编码问题,但这应该正确地提供它。
这只是一个例子,您可能需要对其进行返工(可能使其成为一个功能,并对其进行迭代)以满足您的确切需求。