学习园地|美工之家
  • 首页
  • 素材
    • 图标
    • PNG
    • PSD素材
    • HTML5
    • CSS+DIV
    • JS代码
    • PPT模板
    • 设计模板
  • 符号
    • 网名符号
    • 表情符号
    • 标点符号
    • 语言符号
    • 符号图案
    • 特殊符号
    • 货币符号
    • 数学符号
    • emoji大全
  • 模板
    • 迅睿cms模板
    • 修罗bbs模板
    • WordPress主题
    • PbootCms模板
    • 帝国cms模板
    • 易优Cms模板
    • DeStoon模板
    • Dedecms模板
    • 404页面模板
    • 精品
    • 作品
  • 插件
    • eyoucms插件
    • xiuno插件
    • 帝国cms插件
    • dedecm插件
  • 教程
    • PS教程
    • 3D教程
    • html+css教程
    • java/安卓教程
    • wordpress教程
    • 帝国cms教程
    • 织梦cms教程
    • 易优cms教程
    • Z-blog教程
    • 修罗bbs教程
    • discuz教程
    • typecho教程
    • PPT教程
    • vps教程
    • 技术分享
  • 提升
    • 个人提升
    • 创业项目
    • 淘宝美工
    • 电商知识
    • 单页简历
    • 毕业论文
    • 教学论文
    • 实用文
    • 开场白
    • 领条
    • 收据
    • 实习
登录

怎样读取stream_get_meta_data各项目数据

2022-04-21 技术分享 0 0 29
  • 详情介绍
  • 常见问题

使用stream_get_meta_data()函数,可以获得网页的各meta项目信息,其中就包括有header的信息,事实上,使用stream_get_meta_data比header函数获得的信息量更加丰富更加多,为网站开发提供很好的辅助作用。

不过当我第一次接触到stream_get_meta_data时,先是一愣,不是因为它信息量大,而是对返回的数据格式表示迷惑。我们先来看看stream_get_meta_data的返回原始数据格式。

源代码:

$thisurl = “http://www.webkaka.com/”;
$fp = fopen($thisurl, ‘r’);
print_r(stream_get_meta_data($fp));

返回结果如下:

Array
(
    [wrapper_data] => Array
        (
            [0] => HTTP/1.1 200 OK
            [1] => Cache-Control: max-age=86400
            [2] => Content-Length: 76083
            [3] => Content-Type: text/html
            [4] => Content-Location: http://www.webkaka.com/index.html
            [5] => Last-Modified: Fri, 19 Jul 2013 09:55:11 GMT
            [6] => Accept-Ranges: bytes
            [7] => ETag: “94f53df6684ce1:5cb3”
            [8] => Server: Microsoft-IIS/6.0
            [9] => X-Powered-By: ASP.NET
            [10] => Date: Fri, 19 Jul 2013 10:03:56 GMT
            [11] => Connection: close
        )
    [wrapper_type] => http
    [stream_type] => tcp_socket
    [mode] => r+
    [unread_bytes] => 1087
    [seekable] =>
    [uri] => http://www.webkaka.com/
    [timed_out] =>
    [blocked] => 1
    [eof] =>
)

输出格式是Array,我们要转换,才可以获得各个项目的信息,并个性化显示在网页上。

经过测试,如下方法有效:

<?php
$url = “http://www.webkaka.com/”;
if(!($fp = @fopen($url, ‘r’)))
         return NULL;
      $meta = stream_get_meta_data($fp);
          foreach(array_keys($meta) as $h){
              $v = $meta[$h];
              echo “”.$h.”: “.$v.”<br/>”;
              if(is_array($v)){
                  foreach(array_keys($v) as $hh){
                      $vv = $v[$hh];
                      echo “”.$hh.”: “.$vv.”<br/>”;
                  }
              }
          }
      fclose($fp);
?>

经过如上方法的处理,输出的结果就可以更加容易被调用。结果如下:

wrapper_data: Array
0: HTTP/1.1 200 OK
1: Cache-Control: max-age=86400
2: Content-Length: 76083
3: Content-Type: text/html
4: Content-Location: http://www.webkaka.com/index.html
5: Last-Modified: Fri, 19 Jul 2013 09:55:11 GMT
6: Accept-Ranges: bytes
7: ETag: “94f53df6684ce1:5cb3”
8: Server: Microsoft-IIS/6.0
9: X-Powered-By: ASP.NET
10: Date: Fri, 19 Jul 2013 10:24:21 GMT
11: Connection: close
wrapper_type: http
stream_type: tcp_socket
mode: r+
unread_bytes: 1087
seekable:
uri: http://www.webkaka.com/
timed_out:
blocked: 1
eof:

补充资料

stream_get_meta_data — 从封装协议文件指针中取得报头/元数据

array stream_get_meta_data ( int $fp )
返回现有 stream 的信息。可以是任何通过 fopen(), fsockopen() 和 pfsockopen() 建立的流。返回的数组包含以下项目:

timed_out (bool) – 如果在上次调用 fread() 或者 fgets() 中等待数据时流超时了则为 TRUE。

blocked (bool) – 如果流处于阻塞 IO 模式时为 TRUE。参见 stream_set_blocking()。

eof (bool) – 如果流到达文件末尾时为 TRUE。注意对于 socket 流甚至当 unread_bytes 为非零值时也可以为 TRUE。要测定是否有更多数据可读,用 feof() 替代读取本项目的值。

unread_bytes (int) – 当前在 PHP 自己的内部缓冲区中的字节数。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
标签: stream_get_meta_data  
runsly
分享 收藏 点赞(0)
  1. 免费下载或者VIP会员资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
  2. 提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。
  3. 找不到素材资源介绍文章里的示例图片?
    对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
  4. 付款后无法显示下载地址或者无法查看内容?
    如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理
  5. 购买该资源后,可以退款吗?
    源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源
上一篇
curl_init()和curl_multi_init()多线程的速度比较
下一篇
两种方法Javascript访问JSON(含嵌套)数据

相关文章

技术分享

内存条容易坏吗?

内存条不容易坏。内存条在电脑主机硬件中是一个比较经久耐用的硬件,只要正确使用,一...
4 年前 0 0 151
技术分享

HTML