a.php function get_data(){
$staff = new staff();
$list = $staff->get_staff_list();
echo serialize($list);
}function get_staff($url='',$posts='') {
global $config;
$url = $config['staff'];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_VERBOSE,1); $contents = curl_exec($ch); 
curl_close($ch);
//echo $contents;
return unserialize($contents );     $contents有值   
     unserialize($contents );输出就什么也没有了  }

解决方案 »

  1.   

    既然 $contents有值
    那就贴出了看看
      

  2.   


    echo $contents;
    echo "======";
    echo unserialize($contents );
    浏览器输出 :a:2:{s:1:"a";s:1:"a";s:1:"b";s:1:"b";}======
    如果序列化和反序列化 在同一个页面   不用curl_init  unserialize就可以取到值   两个文件的编码都是一样的 
      

  3.   

    $s = 'a:2:{s:1:"a";s:1:"a";s:1:"b";s:1:"b";}';
    print_r(unserialize($s));Array ( [a] => a [b] => b )除非你还有未给出的信息
      

  4.   

    还真是神奇了 我把你写上来的 复制运行了下$s = 'a:2:{s:1:"a";s:1:"a";s:1:"b";s:1:"b";}';
    print_r(unserialize($s));
    输出跟你的输出是一样的我复制我的浏览器上输出的a:2:{s:1:"a";s:1:"a";s:1:"b";s:1:"b";}
    print_r(unserialize($s));就什么也不输出了   这是咋回事
      

  5.   

    ....
     $contents = curl_exec($ch);echo base64_encode($contents); //贴出结果
      

  6.   


    echo $contents;
    echo "====";
    echo base64_encode($contents); 
    浏览器输出  
    a:2:{s:1:"a";s:1:"a";s:1:"b";s:1:"b";}====77u/77u/YToyOntzOjE6ImEiO3M6MToiYSI7czoxOiJiIjtzOjE6ImIiO30=
      

  7.   

    果然是 BOM 头的问题$s = base64_decode('77u/77u/YToyOntzOjE6ImEiO3M6MToiYSI7czoxOiJiIjtzOjE6ImIiO30=');
    print_r(unserialize(substr($s, 6)));Array ( [a] => a [b] => b ) 你需要将 $url 指向的文件保存成无 BOM 头的文件
      

  8.   

    用editplus 去掉了还是不行  
      

  9.   


    怎么去掉的?另存为utf-8无bom格式。
      

  10.   

    在网上搜了下 用的editplus ->工具->参数->文件->总是移除签名  
    然后把文件另存为  我不知道去掉了没去掉  好像我的没有去掉  因为还是反序列不可以 我没办法用的字符串截取 把前面几个字符截取了  有时间了再好好看看 
    非常感谢 ‘xuzuning'嘿嘿