欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

有没有办法获得file_get_contents返回页面的url

程序员文章站 2022-04-19 16:51:05
...
用file_get_contents带cookie访问某远程页面,但是该页面跳转到另一页面,现在问题是能否获得跳转后页面的url?我知道用get_headers是可以获得cookie等头信息的,但是如何获得url呢?


回复讨论(解决方案)

get_headers 也能获得跳转的URL吧

file_get_contents 会根据 http 头的指示自动跳转到新的目标 url
如果目标 url 有跳转,则在 get_headers 的结果中有 Location 项。
且 get_headers 也会跟踪到最终目标,于是最后的 Location 项的值就是你要的了

$a = get_headers($url, 1);if(isset($a['Location'])) {  $url = is_array($a['Location']) ? array_pop($a['Location']) : $a['Location'];}

你都知道原始链接,直接在浏览器打开,不就知道它跳转到哪个链接了嘛?

file_get_contents 会根据 http 头的指示自动跳转到新的目标 url
如果目标 url 有跳转,则在 get_headers 的结果中有 Location 项。
且 get_headers 也会跟踪到最终目标,于是最后的 Location 项的值就是你要的了

$a = get_headers($url, 1);if(isset($a['Location'])) {  $url = is_array($a['Location']) ? array_pop($a['Location']) : $a['Location'];}


可是头信息里没有location项啊,这是何故?其实我做的是针对discuz的自动发帖,发完贴之后就跳转到帖子内容页了,现在我想取得新帖的id,url里面有这个。

他只有一节 200,所以并没有发生 http 跳转
而是在表单接受页直接 include 了帖子页
你只能分析页面内容,找出帖子的 id
其实也很简单:找到回复的代码就可以了