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

使用PHP切割HTML页面DIV

程序员文章站 2022-05-21 20:07:47
...
跳至
$pre_p){
            $ps[(int)$pre_p[1]] = 'p';
            $ps[(int)$suf_matches[0][$index][1]] = 's';    
        }
        
        //对p进行排序
        $sort = array_keys($ps);
        asort($sort);
        
        $count = count($pre_matches[0]);
        foreach($pre_matches[0] as $index=>$pre_p){
            //<p $hit <p+1    时p被命中
            if(($pre_matches[0][$index][1] < $hit) 
                && ($hit < $pre_matches[0][$index+1][1])){
                $deeper = 0;
                //弹出被命中p前的p
                while(array_shift($sort) != $pre_matches[0][$index][1] 
                    && ($count--)) continue;
                //对剩余p进行匹配,若下一个为前缀,则向下一层,$deeper加1,
                //否则后退一层,$deeper减1,$deeper为0则命中匹配,计算p长度
                foreach($sort as $key){
                    if($ps[$key] == 'p') $deeper++;
                    else if($deeper == 0) {
                        $length = $key-$pre_matches[0][$index][1];
                        break;
                    }else {
                        $deeper--;
                    }
                }
                $hitDivString = substr($data,$pre_matches[0][$index][1],$length).'';
                break;
            }
        }
        return $hitDivString;
    }
    //考虑到id单双引号符号问题,id="u"由用户自己填写。
    //声明:此段php只针对带 id p内容的读取。
    echo getWebDiv('id="taglist"','http://www.cnblogs.com/Zjmainstay/tag/');

//End_php

2. [代码]完善:匹配任意闭合带id标签

$pre_p){
            $ps[(int)$pre_p[1]] = 'p';
            $ps[(int)$suf_matches[0][$index][1]] = 's';    
        }
        
        //对p进行排序
        $sort = array_keys($ps);
        asort($sort);
        
        $count = count($pre_matches[0]);
        foreach($pre_matches[0] as $index=>$pre_p){
            //<p $hit <p+1    时p被命中
            if(($pre_matches[0][$index][1] < $hit) && ($hit < $pre_matches[0][$index+1][1])){
                $deeper = 0;
                //弹出被命中p前的p
                while(array_shift($sort) != $pre_matches[0][$index][1] && ($count--)) continue;
                //对剩余p进行匹配,若下一个为前缀,则向下一层,$deeper加1,
                //否则后退一层,$deeper减1,$deeper为0则命中匹配,计算p长度
                foreach($sort as $key){
                    if($ps[$key] == 'p') $deeper++;
                    else if($deeper == 0) {
                        $length = $key-$pre_matches[0][$index][1];
                        break;
                    }else {
                        $deeper--;
                    }
                }
                $hitDivString = substr($data,$pre_matches[0][$index][1],$length).'';
                break;
            }
        }
        return $hitDivString;
    }
    
    echo getWebTag('id="nav"','http://mail.163.com/html/mail_intro/','ul');
    echo getWebTag('id="homeBanners"','http://mail.163.com/html/mail_intro/');
    echo getWebTag('id="performance"','http://mail.163.com/html/mail_intro/','section');

//End_php