2011-11-16 43 views
2

我使用如下命令处理中获得参数空间

$page = file_get_contents($url); 

其中

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

当网址在浏览器中的铬直接输入增加了%20名字和姓氏之间该网站正确处理事情。

然而,当我使用$网址与空间,抓住的file_get_contents仅匹配名字的结果,是不知道workername = "firstname lastname"

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

有什么工作?

谢谢你们!

+3

你试过'urlencode()来'荷兰国际集团在'$ url'字符串? – PeeHaa

+0

启用'error_reporting'并在请求后检查'$ http_response_header'。 – mario

回答

2

的几个问题:

  1. 我希望这仅仅是因为你在这里快速输入的,但是你需要有在单引号的字符串。
  2. 该URL没有查询字符串,因为您从不使用?启动它,因此不会在$_GET中存在这些变量。
  3. 必须重新定义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); 
+0

这些都不是问题。我实际上拥有所有这些东西......很大程度上忽略了它们,因为快速输入引发的错误..任何其他想法? – algorithmicCoder

+0

我添加了一个编辑,但除了表格之外,我想不出任何会导致它失败的功能。尽管如此,URL仍然需要用'%20'编码。你确定在名字或姓氏中没有其他字符需要编码吗? – animuson

+0

我想要指出的一点是,URL编码也允许'+'作为空间字符的有效编码。 – Wormbo

-2

您需要urlencode文本:

$fixed= urlencode($workername); 
$url = 'http://www.example.com/search/?tab=names&workername='.$fixed;