我正在尝试通过使用“ 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);
谢谢..
答案 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]
)并自行解析。