file_get_contents不匹配复制的值 - 甚至没有修剪

时间:2017-05-09 20:15:56

标签: php

大家晚上好

我现在有点说不出话来。我在PHP工作了很长时间,但我无法解决一个简单的JSON字符串。

所以我到目前为止:

表示问题的简单脚本:

<?php
  $twasiapiraw = file_get_contents("https://twasi.net/api/spendencoins/get/41847584?API_KEY=TWASI_PUBLIC_KEY");
  $twasiapifake = '{"code":200,"message":"OK","coins":[{"twitch_id":"41847584","coins":0,"twitch_name":"mekalix"}]}';
  var_dump(trim($twasiapiraw));
  echo "<br>";
  var_dump(trim($twasiapifake));
?>

所以输出完全匹配,这个截图清楚地说明了这一点: Comparison 很奇怪的是,它们似乎有不同的长度(一个99,另一个96)。我也尝试过它没有修剪,但我认为最后可能会有一些换行符。

JSON是有效的,但是当我尝试解码它时,这将导致PHP Json错误4 - 语法错误。但我确信当两个字符串长度相同时,这可能会自行解决。如何让两个字符串匹配?

我感谢任何帮助或帮助。

1 个答案:

答案 0 :(得分:2)

在您从API获取的字符串的开头有Byte Order Mark

您可以将其删除。

if (substr($twasiapiraw, 0, 3) == "\xef\xbb\xbf") {
    $twasiapiraw = substr($twasiapiraw, 3);
}

它表示该字符串是UTF-8编码的,但json_decode仅适用于UTF-8编码的字符串。