处理 get 参数中的空格

alg*_*der 5 php get

我正在使用类似的命令

 $page = file_get_contents($url);
Run Code Online (Sandbox Code Playgroud)

在哪里

$url = "http://www.site.com/search/index.cfm?tab=names&workername=firstname lastname";
Run Code Online (Sandbox Code Playgroud)

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

但是,当我使用带有空格的 $url 时,file_get_contents 只抓取与名字匹配的结果,并且不知道 workername = "firstname lastname"

当我在它之间明确添加“%20”时,它返回NULL......

有什么工作?

谢谢你们!

ani*_*son 3

几个问题:

  1. 我希望这只是因为您在这里快速输入了它,但您需要将字符串放在单引号中。
  2. URL 没有查询字符串,因为您从不以 开头?,所以不,这些变量都不存在于 中$_GET
  3. 确实%20必须重新定义URL 的空间。

$url = 'http://www.site.com/search/?tab=names&workername=firstname%20lastname';
       ^                           ^                              ^^^        ^
Run Code Online (Sandbox Code Playgroud)

编辑:
您尝试查询的网站可能会忽略它们作为 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);
Run Code Online (Sandbox Code Playgroud)