为什么json_decode在1个pc中获得语法错误,在另一个中工作正常

时间:2017-03-03 15:21:29

标签: php json

情况就是这样。

我们的客户端代码side_nav.php(在本地apache服务器中)

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL,'http://ourserver.com/get_side_nav.php');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $output = curl_exec ($ch); // Executr
  curl_close ($ch); // Close cURL handl




// i added this to remove invalid chars

for ($i = 0; $i <= 31; ++$i) {
    $output = str_replace(chr($i), "", $output);
}
$output = str_replace(chr(127), "", $output);

if (0 === strpos(bin2hex($output), 'efbbbf')) {
   $output = substr($output, 3);
}

$data = json_decode($output);

// outputs the json object.
echo var_dump($data);

if(json_last_error() != 0){
  echo 'ERROR JSON CODE ' . json_last_error();
}

并且我们的get_side_nav.php(服务器)在调用时返回此json。

{"navs":[{"href":"index.php","class":"fa fa-dashboard","name":"Dashboard"},{"href":"inventory.php","class":"fa fa-dropbox","name":"Inventory"},{"href":"gr_list.php","class":"fa fa-money","name":"Goods Received"},{"href":"new_sales.php","class":"fa fa-money","name":"Sales"},{"href":"credit_sales.php","class":"fa fa-paste","name":"Credit Sales"}]}

问题是,由于某种原因,我无法使pc 2成功解码JSON,它返回JSON错误4,即JSON_ERROR_SYNTAX。两个PCS都运行完全相同的wampserver版本。然而,另一台PC解码它从我们的服务器获得的JSON并成功显示该对象。

1 个答案:

答案 0 :(得分:0)

我在执行$data 之前对原始json_decode() 进行了一些比较,看看它们在这一点上是否已经有所不同。如果像代理服务器这样的东西阻止或改变来自一台PC而不是另一台PC的卷曲路径,那么可能是坏的PC&#34;正在获得一个HTML阻止页面的原始$data