大家晚上好
我现在有点说不出话来。我在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));
?>
所以输出完全匹配,这个截图清楚地说明了这一点: 很奇怪的是,它们似乎有不同的长度(一个99,另一个96)。我也尝试过它没有修剪,但我认为最后可能会有一些换行符。
JSON是有效的,但是当我尝试解码它时,这将导致PHP Json错误4 - 语法错误。但我确信当两个字符串长度相同时,这可能会自行解决。如何让两个字符串匹配?
我感谢任何帮助或帮助。
答案 0 :(得分:2)
在您从API获取的字符串的开头有Byte Order Mark。
您可以将其删除。
if (substr($twasiapiraw, 0, 3) == "\xef\xbb\xbf") {
$twasiapiraw = substr($twasiapiraw, 3);
}
它表示该字符串是UTF-8编码的,但json_decode
仅适用于UTF-8编码的字符串。