php curl_init json 有个问题让我搞不清楚哪里出了问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php curl_init json 有个问题让我搞不清楚哪里出了问题相关的知识,希望对你有一定的参考价值。

各位老师是这样的。
我正在做一个获取接口数据的东西,第一个php程序负责根据发过来的POST数据生成结果,然后返回出json格式,
第二个程序PHP负责用curl_init将返回的数据分析出来。
问题就是:返回的数据经过下面的:
$arr_result=json_decode($result,true);

var_dump($arr_result);
是NULL;

为了验证有没有数据过来 我直接输出了结果,结果是存在的。然后在浏览器拷贝 复制后 覆盖这个变量是可以的。

以下是第二个程序的PHP代码
//组合条件
$q='@content '.$str_sql1.' @title '.$str_sql2;

$post_string = array('q'=>$q,'num'=>5);

$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, "http://data.souwf.com/");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_string));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设定是否显示头信息
curl_setopt($ch, CURLOPT_HEADER, false); //设定是否输出页面内容
$result=curl_exec($ch);
curl_close($ch);

//echo $result;
//echo '<hr>';

$arr_result=json_decode($result,true);

var_dump($arr_result);

第一个程序的PHP代码是:

。。。 。。。
$str_list='';
if($zongshu>0)
$arr_list=array();
foreach ($res["matches"] as $key => $value)
$id=$value["id"];
$md='Msg'.substr($id,0,5);

$model=new $md;
$criteria=new CDbCriteria();
$criteria->condition="t.id='".$id."'";
$data=$model->find($criteria);

$arr_msg=array('id'=>$id,'title'=>$data->title,'content'=>$data->content,'from_weburl'=>$data->from_weburl);
$arr_result['msg'][]=$arr_msg;




echo json_encode($arr_result);

问题到底是出在哪里呢?谢谢

参考技术A 首先输出下 curl抓取的值是怎么样的

Flickr图片拉入PHP JSON

  1. <?php
  2. $flickrId = 'userId'; // Find your Flickr ID at http://idgettr.com
  3. $flickrrequest = 'http://api.flickr.com/services/feeds/photos_public.gne?id=' . $flickrId . '&format=json';
  4. $flickrci = curl_init($flickrrequest);
  5. curl_setopt($flickrci,CURLOPT_RETURNTRANSFER, TRUE);
  6. $flickrinput = curl_exec($flickrci);
  7. curl_close($flickrci);
  8.  
  9. // Flickr JSON doesn't come in standard form, some str replace needed
  10.  
  11. $flickrinput = str_replace('jsonFlickrFeed(','',$flickrinput);
  12. $flickrinput = str_replace('})','}',$flickrinput);
  13.  
  14. // parameter 'true' is necessary for output as PHP array
  15.  
  16. $flickrvalue = json_decode($flickrinput,true);
  17. $flickritem = $flickrvalue['items'];
  18.  
  19. // echo the channel information
  20.  
  21. echo "<h3><a href="" . $flickrvalue['link'] . "">" . $flickrvalue['title'] . "</a></h3> ";
  22. echo "<p>" . $flickrvalue['description'] . "</p> ";
  23.  
  24. $photosToDisplay = 5; //change this to the number of photos you want to display
  25.  
  26. for($p=0;$p<$photosToDisplay;$p++){
  27. echo "<a href="" . $flickritem[$p]['link'] . ""><img src="" . $flickritem[$p]['media']['m'] . "" /></a> ";
  28. }
  29.  
  30. echo "<p><a href="" . $flickrvalue['link'] . "">View all my photos</p> ";
  31. ?>

以上是关于php curl_init json 有个问题让我搞不清楚哪里出了问题的主要内容,如果未能解决你的问题,请参考以下文章

PHP Curl json POST 不适合我

通过 PHP cURL 发送多维 JSON 数据

Flickr图片拉入PHP JSON

php解析json数组

PHP CURL DELETE 请求

如何使用 php 在 WordPress 插件中回显 json 数据 [重复]