$ _REQUEST [“ url”]未获取完整的URL

时间:2018-10-05 15:48:30

标签: php html url request file-get-contents

我正在尝试通过使用“ file_get_contents”,然后是“ htmlentities”,最后是“ explode”来加载Facebook网址,以提取视频网址。

我的问题,当将链接放入php时工作正常,但是当我使用$_REQUEST["url"]时,我得到的链接比发送的链接短

示例: 在浏览器中,我得到:https://m.facebook.com/story.php?story_fbid=726043457734682&id=520394245009393&_rdr

但是如果我从PHP打印,它将是:https://m.facebook.com/story.php?story_fbid=72604345773468

我将此行添加到了我的PHP中:

ini_set('user_agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:7.0.1) Gecko/20100101 Firefox/60.0');

我尝试使用“ $ _GET”

没有用:(

我尝试了很多代码,但没有解决我的问题,或者也许我不知道如何使用....请帮我举个例子。

我想要的东西:

$url = $_REQUEST["url"];
$lines = file_get_contents($url);
$page = htmlentities($lines);

谢谢..

1 个答案:

答案 0 :(得分:-1)

问题在于您用来请求PHP脚本的URL。

您有类似这样的内容:

http://example.com/your.php?url=http://something/?foo=1&bar=2

&字符在查询字符串中具有特殊含义。它分隔值。

这给您:

url = http://something/?foo=1
bar = 2

这就是为什么您的Facebook URL在&处被切断的原因。

在将其发送到PHP之前,您需要先对URL进行编码。

至少需要将&替换为%26,但是您应该使用一个函数来替换所有特殊字符,例如JavaScript的encodeURIComponent或PHP的{{3 }}。

这将为您提供:

http://example.com/your.php?url=http%3A%2F%2Fsomething%2F%3Ffoo%3D1%26bar%3D2

如上所述,将输入内容固定到脚本中是解决此问题的正确且最简单的方法。

如果您绝对不能修复原始输入数据,则需要访问URL中的原始数据(使用$_SERVER[REQUEST_URI])并自行解析。