dtb*_*ker 4 php json google-plus
Google+ API的结果已\ufeff附加到每个"内容"结果的末尾(我真的不知道为什么?)
从json结果中删除此unicode字符的最佳方法是什么?它正在生成'?'一些我正在显示的输出.
例:
https://developers.google.com/+/api/latest/activities/get#try-it
Run Code Online (Sandbox Code Playgroud)
输入活动ID
z12pvrsoaxqlw5imi22sdd35jwvkglj5204
Run Code Online (Sandbox Code Playgroud)
然后单击执行,结果将是:
{
.....
"object": {
......
"content": "CONTENT OF GOOGLE PLUS POST HERE \ufeff",
......
Run Code Online (Sandbox Code Playgroud)
显示'?'的示例PHP代码 其中'\ ufeff'是:
<?php
$data = json_decode($result_from_google_plus_api, true);
echo $data['object']['content'];
// outputs "CONTENT OF GOOGLE PLUS POST HERE ?"
echo trim($data['object']['content']);
// outputs "CONTENT OF GOOGLE PLUS POST HERE ?"
Run Code Online (Sandbox Code Playgroud)
或者我是以错误的方式来做这件事的?我应该修理'?' 问题而不是试图删除'\ufeff'?
在您的情况下,您可以使用此正则表达式:
$str = preg_replace('/\x{feff}$/u', '', $str);
Run Code Online (Sandbox Code Playgroud)
这样,您就可以完全匹配该代码点值并将其删除.
根据我的经验,你想要删除更多的白色空间角色.从我的经验来看,这对我很有用:
# I like to call this unicodeTrim()
$str = preg_replace(
'/
^
[\pZ\p{Cc}\x{feff}]+
|
[\pZ\p{Cc}\x{feff}]+$
/ux',
'',
$str
);
Run Code Online (Sandbox Code Playgroud)
我发现http://www.regular-expressions.info/unicode.html是一个关于细节的非常好的资源:
\pZ - 匹配任何类型的空格或不可见的分隔符\p{Cc} - 匹配控制字符\x{feff} - 匹配BOM我已经看到正则表达式建议匹配\pC而不是\pCc,但这是危险的,因为pC包括没有分配任何字符的任何代码点.因此,我已经删除了实际数据(某些表情符号或其他内容).
但是,YMMW,我不能强调这一点.