php 正则表达式 匹配 html标签,php 用正则表达式 如何匹配成对的html标签?

php纯正则很难实现这样复杂的匹配,必须做些逻辑处理,一下是正则加逻辑处理:

$s = <<

.....
xxx
xxx

aaa

contents

html;

$pattern = "/(".

"]*?)+\s*>|".

"\s]+))?)*\s*\/?>|".

"|".

"".

")/";

preg_match_all($pattern, $s, $aMatches, PREG_OFFSET_CAPTURE);

function getNested($strHTML, $str, $arr) {

$i=0;

$j=0;

$h=0;

$arrStr = array();

$arrBak = $arr;

$arrNested1 = array();

$arrNested2 = array();

foreach($arr as $k=>$v) {

if(trim($v[0]) == $str) {

$arrStr[0] = $v[0];

$arrStr[1] = $v[1];

$arrStr[2] = $k;

}

}

for($i=$arrStr[2]; $i

if (preg_match('/

$j++;

$arrNested1[$j][] = $arrBak[$i];

}

if (preg_match('//', $arrBak[$i][0])) {

$h++;

$arrNested2[$h][] = $arrBak[$i];

}

}

return substr($strHTML, strlen($str), $arrNested2[$j][0][1]-$arrStr[1]-strlen($str));

}

echo getNested($s, '

', $aMatches[0]);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值