$s = <<
nested tag testhtml;
$pattern = "/(".
"]*?)+\s*>|".
"\s]+))?)*\s*\/?>|".
"|".
"".
")/";
preg_match_all($pattern, $s, $aMatches, PREG_OFFSET_CAPTURE);
function getMatchTags($s, $arr) {
$sMatchClose = '';
$arrClose = array();
$arrReturn = array();
for($i=0; $i
$iCount = 0;
if (preg_match("/\s*]*/", $arr[$i][0], $aMatchOpen)) {
$sMatchClose = '' . substr($aMatchOpen[0], 1) . '>';
for($j=$i-1; $j
if (!(stripos($arr[$j][0], $aMatchOpen[0]) === false)) {
$iCount ++;
$flag = 1;
}
if (!(stripos($arr[$j][0], $sMatchClose) === false)) {
$iCount --;
$flag = 1;
if($iCount == 0 && $flag == 1) {
$arrClose[] = $arr[$i];
$arrClose[] = $arr[$j];
}
}
}
}
}
$k=0;
for($i=0; $i
$arrReturn[$k][0] = $arrClose[$i];
$arrReturn[$k][1] = $arrClose[$i+1];