提取HTML标签


Posted in PHP onOctober 09, 2006

<?php
/*********************************
*
*  作者: 徐祖宁 (唠叨)
*  邮箱: czjsz_ah@stats.gov.cn
*  开发: 2002.07
*
*
*  函数: tags
*  功能: 从文件中提取HTML标签
*
*  入口:
*  $filename 文件名
*  $tag      标签名
*  返回:
*  数组,每项为:
*   tagName    String
*   Text       String
*   Attrs      Array
*
*  示例:
*  print_r(tags("test1.htm","a"));
*  print_r("http://localhost/index.htm","img");
*
*/

function tags($filename,$tag) {
  $buffer = join("",file($filename));
  $buffer = eregi_replace("\r\n","",$buffer);
  $tagkey = sql_regcase($tag);
  $buffer = eregi_replace("<$tagkey ","\n<$tag ",$buffer);
  $ar = split("\n",$buffer);

  foreach($ar as $v) {
    if(! eregi("<$tagkey ",$v)) continue;
    eregi("<$tagkey ([^>]*)((.*)</$tagkey)?",$v,$regs);
    $p[tagName] = strtoupper($tag);
    if($regs[3])
      $p[Text] = $regs[3];
    $s = trim(eregi_replace("[ \t]+"," ",$regs[1]))." ";
    $s = eregi_replace(" *= *","=",$s);

    $a = split(" ",$s);
    for($i=0;$i<count($a);$i++) {
      $ch = array();
      if(eregi("=[\"']",$a[$i])) {
        $j = $i+1;
        while(!eregi("[\"']$",$a[$i])) {
          $a[$i] .= " ".$a[$j];
          unset($a[$j]);
        }
      }
    }
    foreach($a as $k) {
      $name = strtoupper(strtok($k,"="));
      $value = strtok("\0");
      if(eregi("^[\"']",$value))
        $value = substr($value,1,-1);
      if($name)
        $p[Attrs][$name] = $value;
    }
    $pp[] = $p;
  }
  return $pp;
}

?>

PHP 相关文章推荐
图书管理程序(一)
Oct 09 PHP
php 生成随机验证码图片代码
Feb 08 PHP
php使用百度天气接口示例
Apr 22 PHP
php中创建和调用webservice接口示例
Jul 25 PHP
Yii学习总结之安装配置
Feb 22 PHP
PHP定时执行任务实现方法详解(Timer)
Jul 30 PHP
CodeIgniter配置之autoload.php自动加载用法分析
Jan 20 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
PHP实现的mysql读写分离操作示例
May 22 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
Oct 14 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
PHP中国际化的字符串排序和比较对象详解
Aug 23 PHP
如何把PHP转成EXE文件
Oct 09 #PHP
一个查看session内容的函数
Oct 09 #PHP
一个显示天气预报的程序
Oct 09 #PHP
web方式ftp
Oct 09 #PHP
php中文本数据翻页(留言本翻页)
Oct 09 #PHP
自己动手做一个SQL解释器
Oct 09 #PHP
GD输出汉字的函数的分析
Oct 09 #PHP
You might like
PHP实现多条件查询实例代码
2010/07/17 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
php计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
Yii2如何批量添加数据
2016/05/17 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
javascript alert乱码的解决方法
2013/11/05 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
VUE-cli3使用 svg-sprite-loader
2018/10/20 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
python使用range函数计算一组数和的方法
2015/05/07 Python
python 以16进制打印输出的方法
2018/07/09 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
scrapy结合selenium解析动态页面的实现
2020/09/28 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
超市采购员岗位职责
2014/02/01 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
精彩广告词大全
2014/03/19 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
幼儿园园长六一致辞
2015/07/31 职场文书
Redis 异步机制
2022/05/15 Redis