提取HTML标签

 1   
 2/*********************************   
 3*   
 4* 作者: 徐祖宁 (唠叨)   
 5* 邮箱: [email protected]   
 6* 开发: 2002.07   
 7*   
 8*   
 9* 函数: tags   
10* 功能: 从文件中提取HTML标签   
11*   
12* 入口:   
13* $filename 文件名   
14* $tag 标签名   
15* 返回:   
16* 数组,每项为:   
17* tagName String   
18* Text String   
19* Attrs Array   
20*   
21* 示例:   
22* print_r(tags("test1.htm","a"));   
23* print_r("http://localhost/index.htm","img");   
24*   
25*/   
26  
27function tags($filename,$tag) {   
28$buffer = join("",file($filename));   
29$buffer = eregi_replace("\r\n","",$buffer);   
30$tagkey = sql_regcase($tag);   
31$buffer = eregi_replace("<$tagkey ","\n<$tag ",$buffer);   
32$ar = split("\n",$buffer);   
33  
34foreach($ar as $v) {   
35if(! eregi("<$tagkey ",$v)) continue;   
36eregi("<$tagkey ([^>]*)((.*)</$tagkey)?",$v,$regs);   
37$p[tagName] = strtoupper($tag);   
38if($regs[3])   
39$p[Text] = $regs[3];   
40$s = trim(eregi_replace("[ \t]+"," ",$regs[1]))." ";   
41$s = eregi_replace(" *= *","=",$s);   
42  
43$a = split(" ",$s);   
44for($i=0;$i<count($a);$i++) {   
45$ch = array();   
46if(eregi("=[\"']",$a[$i])) {   
47$j = $i+1;   
48while(!eregi("[\"']$",$a[$i])) {   
49$a[$i] .= " ".$a[$j];   
50unset($a[$j]);   
51}   
52}   
53}   
54foreach($a as $k) {   
55$name = strtoupper(strtok($k,"="));   
56$value = strtok("\0");   
57if(eregi("^[\"']",$value))   
58$value = substr($value,1,-1);   
59if($name)   
60$p[Attrs][$name] = $value;   
61}   
62$pp[] = $p;   
63}   
64return $pp;   
65}   
66  
Published At
Categories with Web编程
Tagged with
comments powered by Disqus