删除" \ ufeff"从对象的结尾 - > Google+ API json结果中的内容

时间:2014-05-05 02:04:06

标签: php json google-plus

Google+ API的结果在每个“内容”结果的末尾附加了\ufeff(我真的不知道为什么?)

从json结果中删除此unicode字符的最佳方法是什么?它正在我正在显示的一些输出中产生'?'

示例:

https://developers.google.com/+/api/latest/activities/get#try-it 

输入活动ID

z12pvrsoaxqlw5imi22sdd35jwvkglj5204

并单击Execute,结果将为:

{
 .....
 "object": {
  ......
  "content": "CONTENT OF GOOGLE PLUS POST HERE \ufeff",
  ......

示例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 ?"

或者我是以错误的方式来做这件事的?我应该修理'?'问题而不是尝试删除'\ufeff'

2 个答案:

答案 0 :(得分:9)

在您的情况下,您可以使用此正则表达式:

$str = preg_replace('/\x{feff}$/u', '', $str);

这样,您就可以完全匹配该代码点值并将其删除。

根据我的经验,你想删除更多的白色空间角色。从我的经验来看,这适用于 me

# I like to call this unicodeTrim()
$str = preg_replace(
  '/
    ^
    [\pZ\p{Cc}\x{feff}]+
    |
    [\pZ\p{Cc}\x{feff}]+$
   /ux',
  '',
  $str
);

我发现http://www.regular-expressions.info/unicode.html是关于细节的非常好的资源:

  • \pZ - 匹配任何类型的空格或不可见的分隔符
  • \p{Cc} - 匹配控制字符
  • \x{feff} - 匹配BOM

我已经看到正则表达式建议匹配\pC而不是\pCc,但这很危险,因为pC包含任何没有分配字符的代码点。由于这个原因,我已经删除了实际数据(某些表情符号或其他内容)。

但是,YMMW,我不能&#39;强调这一点。

答案 1 :(得分:1)

尊重所有答案


我测试了大多数答案,但最终在此处找到解决方案:GitHub

$field = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $field);