分类

最新评论

Kevin's Blog
.
不管你来或不来,我都在这里--- my country of freedom.
2024
如果人生是值得的,那就值得记录…

十一月 初九 甲辰【龙】年
丙子月 丁未日 
Mon,09 Dec 2024 15:33:20
自由国度 平凡的足迹
Fri, 16 Apr 2021 5
/**
 *
 * @param string $str
 * @param string $start 完整起始标签 <标签名 class="xxxxx">
 * @return array || false
 * @example jqHtmlDbq(string $str,string $start); 
 * 截取对标签$start 标签名 例:<标签名 class="xxxxx"> <p id="xxxxx"> 标签开始的标志,
 * 返回数组 匹配到的所有标对标签,不是唯一起始标签时,可能有多个
 =========demo=============
	$str='<div class="2"><h2>key</h2><div class="title">title2</div>';
	$start='<h2>';
	$str_arr = jqHtmlDbq($str,$start);
	if($str_arr && count($str_arr)){
		print_r($str_arr);
	}else{
		 echo '截取失败';
	}
===========================
 *
 **/
function jqHtmlDbq(string $str,string $start){
    if(preg_match('/^<[A-Za-z]+\d*/',$start,$match)){
        $end = str_replace('<','<\/',$match[0]).'>';
    }else{
        echo '截取对标签起始标签有误!';
        exit;
    }
    //剔除独立标签
    foreach(array('input','hr','br','img') as $tag){
        $reg='/<'.$tag.'.*?>/isx';
        if(preg_match_all($reg,$str,$matchs)){
            foreach($matchs[0] as $match){
                $str_tmp=str_replace('<','====+====',$match);
                $str_tmp=str_replace('>','====-====',$str_tmp);
                $str = str_replace($match,$str_tmp,$str);
            }
        }
    }
    //正则匹配对标签
    $reg = '/'.$start.'(([^<]*<[^<>]*>[^<]*<\/[^><]*>[^<]*)*|[^<>]*)'.$end.'/Uis';//暂测靠谱
    if(preg_match_all($reg,$str,$matchs)){
        $re =array();
        foreach($matchs[0] as $match){
            //还原独立标签
            $match = str_replace('====+====','<',$match);
            $re[] = str_replace('====-====','>',$match);
        }
        return $re;
    }
    return false;
}
共有0条留言

154368