На случай, если мы доверяем пользовательскому коду - но он может порушить нам структуру страницы, и надо его слегка поправить.
Да, не забудьте проверку на <SCRIPT>, а то можно и XSS словить…
Функция закрывает все открытые HTML теги.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| function close_dangling_tags($html){ preg_match_all("#<([a-z]+)( .*)?(?!/)>#iU",$html,$result); $openedtags=$result[1]; preg_match_all("#</([a-z]+)>#iU",$html,$result); $closedtags=$result[1]; $len_opened = count($openedtags); if(count($closedtags) == $len_opened){ return $html; } $openedtags = array_reverse($openedtags); for($i=0;$i < $len_opened;$i++) { if (!in_array($openedtags[$i],$closedtags)){ $html .= '</'.$openedtags[$i].'>'; } else { unset($closedtags[array_search($openedtags[$i],$closedtags)]); } } return $html; }
|
Украл у jamiew.