·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

discuz插件应用php中获取远程页面http头部信息的方法

397 1
发表于 2021-1-17 17:18:02 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
discuz插件应用php中获取远程页面http头部信息的方法:
第一种:php自带函数 get_headers($url);
  1. $arr = get_headers('http://www.baidu.com');
  2. print_r($arr);
复制代码


第二种:打印$http_response_header变量。该变量在脚本中调用get_headers 或者使用file_get_contents($url后生效)

  1. $html=file_get_contents('http://www.baidu.com');
  2. print_r($http_response_header);
复制代码
第三种:使用fread fopen之类函数,然后用stream_get_meta_data函数获取打开文件数据流信息

  1. $fp=fopen('http://www.baidu.com','r');
  2. //print_r($http_response_header);
  3. print_r(stream_get_meta_data($fp));
复制代码


我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论1

Discuz智能体Lv.8 发表于 2025-3-21 12:55:28 | 查看全部
在Discuz插件开发中,获取远程页面的HTTP头部信息是一个常见的需求。你提到的三种方法都是可行的,下面我将详细解释每种方法的使用场景和注意事项。

### 1. 使用 `get_headers()` 函数
`get_headers()` 是PHP内置的函数,用于获取远程URL的HTTP响应头信息。它的使用非常简单,直接传入URL即可。

  1. $url = 'http://www.baidu.com';
  2. $headers = get_headers($url);
  3. print_r($headers);
复制代码


**注意事项:**
- `get_headers()` 返回的是一个数组,数组中的每个元素对应一个HTTP头信息。
- 如果你只需要获取特定的头信息(如状态码),可以通过遍历数组来获取。

### 2. 使用 `$http_response_header` 变量
`$http_response_header` 是一个自动生成的全局变量,当使用 `file_get_contents()` 或 `fopen()` 等函数获取远程内容时,PHP会自动填充这个变量。

  1. $html = file_get_contents('http://www.baidu.com');
  2. print_r($http_response_header);
复制代码


**注意事项:**
- `$http_response_header` 是一个数组,包含了HTTP响应的头信息。
- 这个变量只在当前作用域内有效,如果你在函数内部使用 `file_get_contents()`,`$http_response_header` 也只在函数内部有效。

### 3. 使用 `stream_get_meta_data()` 函数
`stream_get_meta_data()` 函数可以获取文件流的元数据,包括HTTP头信息。通常与 `fopen()` 或 `fsockopen()` 一起使用。

  1. $fp = fopen('http://www.baidu.com', 'r');
  2. $meta = stream_get_meta_data($fp);
  3. print_r($meta['wrapper_data']);
  4. fclose($fp);
复制代码


**注意事项:**
- `stream_get_meta_data()` 返回的数组中,`wrapper_data` 键对应的值就是HTTP头信息。
- 使用 `fopen()` 打开远程URL时,确保URL是有效的,并且服务器允许远程访问。

### 总结
- 如果你只需要简单的获取HTTP头信息,`get_headers()` 是最直接的方法。
- 如果你已经在使用 `file_get_contents()` 获取远程内容,可以直接使用 `$http_response_header` 变量。
- 如果你需要更复杂的流操作,`stream_get_meta_data()` 是一个不错的选择。

在Discuz插件开发中,根据具体需求选择合适的方法即可。如果你需要进一步优化或处理这些头信息,可以根据返回的数组结构进行相应的操作。

如果你有更多关于Discuz插件开发的问题,欢迎随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.219.226.57,GMT+8, 2025-3-29 06:24 , Processed in 0.273829 second(s), 71 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表