本帖最后由 dz215136304 于 2013-06-11 11:35:47 编辑

解决方案 »

  1.   

    你可以先看看html 字符实体
      

  2.   


    file_get_contents — 将整个文件读入一个字符串
    说明string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )和 file() 一样,只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容。如果失败,file_get_contents()将返回 FALSE。 file_get_contents()函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。 
    Note: 如果要打开有特殊字符的 URL (比如说有空格),就需要使用 urlencode() 进行 URL 编码。另外
    'header'=>">Accept-language: en/r/n"
    红字部分是什么?
    >是多余的,/r/n应为\r\n
    header不正确的话,服务器端返回错误(505)就是正常的了
      

  3.   


    通过url编码后一样无法获得数据 ,代码如下
    $url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=lizclaiborne&page=1&showMode=list";
    echo Post(urlencode($url));function Post($url, $post = null)//请求的网页
    {
    $context = array(); if (is_array($post))
    {
    ksort($post);

    $context['http'] = array
    (

    'timeout'=>60,
    'method' => 'POST',
    'header'=>"Accept-language: en\r\n",
    'content' => http_build_query($post, '', '&'),
    );
    }return file_get_contents($url, false, stream_context_create($context));
    }
      

  4.   

    实际的错误是:HTTP/1.1 505 HTTP Version Not Supported
      

  5.   

    file_get_contents(str_replace(' ', '%20', $url));
      

  6.   

    现在可以了,刚才可能是他的服务器出现了问题$url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=lizclaiborne&page=1&showMode=list";
    echo file_get_contents($url);
    {"result":"true","totalPage":"100","catmap":"","ppath":"","category":"","auctionTagFlag1":"","auctionTagFlag2":"","auctionTagFlag3":"","listItem":[
               {"name":"团购价美国真品liz claiborne丽资克莱本女款中款钱包 liz钱包" ,"img":"http://q.i02.wimg.taobao.com/bao/uploaded/i1/T18ZyyXfXgXXXc8SLa_122312.jpg_90x90.jpg","img2":"http://q.i04.wimg.taobao.com/bao/uploaded/i1/T18ZyyXfXgXXXc8SLa_122312.jpg","iswebp":"","url":"http://a.m.taobao.com/i2431550873.htm?rn=bwHGEi1-ZClPeKBbGc1lfJhm45-D1gLR8O-pug7&sid=8b9c27255c655b1e","previewUrl":"http://a.m.taobao.com/ajax/pre_view.do?itemId=2431550873&sid=8b9c27255c655b1e","favoriteUrl":"http://fav.m.taobao.com/favorite/to_collection.htm?itemNumId=2431550873&sid=8b9c27255c655b1e",
        "icon":["0" ],
        "price":"39.00","originalPrice":"39.00","freight":"10","area":"天津","act":"月售1","itemNumId":"2431550873","nick":"金缕衣_2007",
    ..........
      

  7.   

    嗯,粘错了数据
    $url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz claiborne&page=1&showMode=list";
    这个不行 HTTP/1.1 505 HTTP Version Not Supported这样都行
    $url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz+claiborne&page=1&showMode=list";
    $url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=liz%20claiborne&page=1&showMode=list";他的服务器不知做了什么设置,不接受未经 url 编码的数据
      

  8.   


    服务器可以接受“未经 url 编码的数据”吗?
    怎么我理解的是服务器只能接受经过url编码的数据呢,
    如果我们直接把带空格的地址在浏览器打开,
    那浏览器已经自动把url编码了,
    所以打开正常,
    但是php并不是浏览器,
    所以它不会自动做这些事情,
    需要手动进行编码,
    难道不是这样的吗?
      

  9.   


    服务器可以接受“未经 url 编码的数据”吗?
    怎么我理解的是服务器只能接受经过url编码的数据呢,
    如果我们直接把带空格的地址在浏览器打开,
    那浏览器已经自动把url编码了,
    所以打开正常,
    但是php并不是浏览器,
    所以它不会自动做这些事情,
    需要手动进行编码,
    难道不是这样的吗?
    空格符(\x20)是url合法字符,怎么处理视乎服务器
    你做过http socket的话就知道了,header发送带空格的url一般也是可接受的
      

  10.   


    服务器可以接受“未经 url 编码的数据”吗?
    怎么我理解的是服务器只能接受经过url编码的数据呢,
    如果我们直接把带空格的地址在浏览器打开,
    那浏览器已经自动把url编码了,
    所以打开正常,
    但是php并不是浏览器,
    所以它不会自动做这些事情,
    需要手动进行编码,
    难道不是这样的吗?
    空格符(\x20)是url合法字符,怎么处理视乎服务器
    你做过http socket的话就知道了,header发送带空格的url一般也是可接受的
    那就是说查询字符串不管是什么字符,
    服务器都可以全部原样接收到是吗?
      

  11.   

    正确的写法是:
    $url="http://110.75.65.8/search_turn_page_iphone.htm?sort=&q=". urlencode('liz claiborne') . "&page=1&showMode=list";
      

  12.   


    服务器可以接受“未经 url 编码的数据”吗?
    怎么我理解的是服务器只能接受经过url编码的数据呢,
    如果我们直接把带空格的地址在浏览器打开,
    那浏览器已经自动把url编码了,
    所以打开正常,
    但是php并不是浏览器,
    所以它不会自动做这些事情,
    需要手动进行编码,
    难道不是这样的吗?
    空格符(\x20)是url合法字符,怎么处理视乎服务器
    你做过http socket的话就知道了,header发送带空格的url一般也是可接受的
    那就是说查询字符串不管是什么字符,
    服务器都可以全部原样接收到是吗?

    换行符和/符,你觉得如何,当然不是任何字符
      

  13.   

    这个问题我以前遇到过,把“&”单独拿出来就可以比方说http://www.123.com?id=123&num=123;
    写成$url='http://www.123.com?id=123'.“&”.'num=123';这样编译器会把它当字符串算不给转换。