我正在使用类似的命令

 $page = file_get_contents($url);

在哪里
$url = "http://www.site.com/search/index.cfm?tab=names&workername=firstname lastname";

当直接在浏览器中输入网址时,Chrome浏览器会在名字和姓氏之间添加一个%20,并且网站可以正确处理。

但是,当我将$ url与空格一起使用时,file_get_contents仅捕获与名字匹配的结果,并且不知道workername = "firstname lastname"
当我在两者之间显式添加“%20”时,它返回NULL ...

周围有什么工作?

谢谢你们!

最佳答案

一些问题:

  • 我希望这仅仅是因为您在这里快速键入了它,但是您需要将字符串用单引号引起来。
  • 该URL没有查询字符串,因为您永远不会以?开头,因此,$_GET中都不存在这些变量。
  • 您必须将空格重新定义为URL的%20

  • $url = 'http://www.site.com/search/?tab=names&workername=firstname%20lastname';
           ^                           ^                              ^^^        ^
    

    编辑:
    您尝试查询的网站可能会忽略它们作为GET变量。您是否尝试添加此代码以明确表示它是GET请求?
    $options = array(
      'http' => array('method' => "GET", 'header' => "Accept-language: en\r\n")
    );
    $context = stream_context_create($options);
    file_get_contents($url, false, $context);
    

    关于php - 在get参数中处理空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8155788/

    10-11 23:15
    查看更多