在JSON文本中获取一些有趣的角色



我正在调用一个Web服务,该网络返回JSON文本,该文本在开始时以某些垃圾的形式出现。任何帮助或指示都赞赏。我对卷发选项有点生锈,这是从我使用过的一些旧代码中,这已经有一段时间了。

当我通过浏览器调用Web服务时,我会得到很好的JSON文本,例如以下内容。我已经删除了一些值只制作几行

{ "values": [[1511596680,3],[1511596740,2],[1511596800,0],[1511596860,6],[1511596920,0],[1511596980,0],[1511597040,0],[1511597100,0],[1511597160,0],[1511603220,0],[1511603280,0],[1511603340,0],[1511603400,0],[1511603460,0],[1511603520,0],[1511603580,0],[1511603640,0],[1511603700,0],[1511603760,0],[1511603820,0]]}

当我通过PHP页面致电,该页面充当包装器。我在它的前面遇到了一些废话,这阻止了PHP在其上调用JSON_DECODE。所谓的URL与我之前用来调用Web服务在浏览器中使用的完全相同。

!»» {" values":[[[1511596680,3],[1511596740,2],[1511596800,0],[1511596860,6],[1511596860,6]1511596980,0],[1511597040,0],[1511597100,0],[1511597160,0],[1511603220,0],[1511603220,0],[1511603280,0]0],[1511603520,0],[1511603580,0],[1511603640,0],[1511603700,0],[15116603760,0],[15116603820,0]

我调用Web服务的PHP代码如下。我不确定$ postrongtring是否为空是一个问题。URL由以URL字符串形式传递的参数组成?param = val& param2 = val2 etc。

$contenttype = 'application/json';
$headers = array(
       'Content-Type: ' . $contenttype,
       'Content-Length: ' . strlen($post_string) /* this an empty string */
        );
/* dump of headers 
Array
(
    [0] => Content-Type: application/json
    [1] => Content-Length: 0
)
*/
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); // this is get */
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
if (is_array($headers)
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$output = curl_exec($ch); // this contains the crap at the start */

我已经插入以下内容以弥补字节顺序标记。

$ output = preg_replace('/[ x00- x1f x80- xff]/','',$ output);

感谢以下链接

如何删除从文件的开头?

"有趣的字符"是由UTF-8 BOM引起的,这意味着字符串以EF BB BF的信号开头,该信号是在UTF-8中编码的。

您可以像这样删除BOM :(在另一个答案中找到Jasonhao):

//Remove UTF8 Bom
function remove_utf8_bom($text)
{
    $bom = pack('H*','EFBBBF');
    $text = preg_replace("/^$bom/", '', $text);
    return $text;
}

相关内容

  • 没有找到相关文章

最新更新