不能使用动态创建位置的file_get_contents

时间:2010-01-28 05:42:23

标签: php

我正在尝试使用file_get_contents()从页面获取html 以下工作很好:file_get_contents('http://www.mypage.com?Title=Title')但以下会导致错误:

$Title = 'Title';
file_get_contents("http://www.mypage.com?Title=$Title")

错误是:

Bad Request

Your browser sent a request that this server could not understand.
The request line contained invalid characters following the protocol string.

Apache/1.3.41 Server at eiit.org Port 80

有谁知道为什么?

4 个答案:

答案 0 :(得分:2)

您正在使用带单引号的字符串;并且没有单引号的变量插值。

这意味着您尝试提取的网址为http://www.mypage.com?Title=$Title,而不是http://www.mypage.com?Title=Title

你应该使用双引号字符串来进行变量插值:

$Title = 'Title';
file_get_contents("http://www.mypage.com?Title=$Title");


如果这仍然不起作用:

  • 检查您的网址是否正常:不要直接将其传递给file_get_contents,而是将其存储在变量中,然后回复它 - 只是为了确保它是正确的。
  • 为什么您的网址中没有网页名称?
    • 您拥有域名:www.mypage.com
    • 参数+值:Title=Title
    • 但没有文件/页面?也就是说,为什么你没有http://www.mypage.com/index.php?Title=$Title之类的东西?甚至是http://www.mypage.com/?Title=$Title
  • 您可能必须urlencode将您传递的值作为URL中的参数。

答案 1 :(得分:1)

单引号内的变量不进行插值;试试:

$Title = 'Title';
file_get_contents("http://www.mypage.com?Title=$Title")

答案 2 :(得分:0)

你试过http://www.mypage.com/?Title=$Title吗?域名后面的斜杠是路径 - 您必须始终在HTTP请求中有一个路径。

答案 3 :(得分:0)

如果我不解决你的问题,你可以试试另一种方式。 (虽然我觉得这不重要)

$Title = 'Title';
$result=file_get_contents("http://www.mypage.com?Title=".$Title)