@@ 1300-1330 (lines=31) @@ | ||
1297 | * @param $string |
|
1298 | * @return string |
|
1299 | */ |
|
1300 | public static function close_tags($string) |
|
1301 | { |
|
1302 | // match opened tags |
|
1303 | if (preg_match_all('/<([a-z\:\-]+)[^\/]>/', $string, $start_tags)) { |
|
1304 | $start_tags = $start_tags[1]; |
|
1305 | ||
1306 | // match closed tags |
|
1307 | if (preg_match_all('/<\/([a-z]+)>/', $string, $end_tags)) { |
|
1308 | $complete_tags = array(); |
|
1309 | $end_tags = $end_tags[1]; |
|
1310 | ||
1311 | foreach ($start_tags as $key => $val) { |
|
1312 | $posb = array_search($val, $end_tags); |
|
1313 | if (is_int($posb)) { |
|
1314 | unset($end_tags[$posb]); |
|
1315 | } else { |
|
1316 | $complete_tags[] = $val; |
|
1317 | } |
|
1318 | } |
|
1319 | } else { |
|
1320 | $complete_tags = $start_tags; |
|
1321 | } |
|
1322 | ||
1323 | $complete_tags = array_reverse($complete_tags); |
|
1324 | for ($i = 0, $iMax = count($complete_tags); $i < $iMax; ++$i) { |
|
1325 | $string .= '</' . $complete_tags[$i] . '>'; |
|
1326 | } |
|
1327 | } |
|
1328 | ||
1329 | return $string; |
|
1330 | } |
|
1331 | ||
1332 | /** |
|
1333 | * @param $string |
@@ 1443-1473 (lines=31) @@ | ||
1440 | * @param $string |
|
1441 | * @return string |
|
1442 | */ |
|
1443 | public static function close_tags($string) |
|
1444 | { |
|
1445 | // match opened tags |
|
1446 | if (preg_match_all('/<([a-z\:\-]+)[^\/]>/', $string, $start_tags)) { |
|
1447 | $start_tags = $start_tags[1]; |
|
1448 | ||
1449 | // match closed tags |
|
1450 | if (preg_match_all('/<\/([a-z]+)>/', $string, $end_tags)) { |
|
1451 | $complete_tags = array(); |
|
1452 | $end_tags = $end_tags[1]; |
|
1453 | ||
1454 | foreach ($start_tags as $key => $val) { |
|
1455 | $posb = array_search($val, $end_tags); |
|
1456 | if (is_int($posb)) { |
|
1457 | unset($end_tags[$posb]); |
|
1458 | } else { |
|
1459 | $complete_tags[] = $val; |
|
1460 | } |
|
1461 | } |
|
1462 | } else { |
|
1463 | $complete_tags = $start_tags; |
|
1464 | } |
|
1465 | ||
1466 | $complete_tags = array_reverse($complete_tags); |
|
1467 | for ($i = 0, $iMax = count($complete_tags); $i < $iMax; ++$i) { |
|
1468 | $string .= '</' . $complete_tags[$i] . '>'; |
|
1469 | } |
|
1470 | } |
|
1471 | ||
1472 | return $string; |
|
1473 | } |
|
1474 | ||
1475 | /** |
|
1476 | * @param $string |