Zamykanie otwartych tagów HTML
Malutka funkcja, która się przydaje, np.: przy skracaniu tekstu artykułu, newsa, itp., gdzie mogą wystąpić niezamknięte tagi.
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_tags($html){
#umieszcza wszystkie otwarte tagi w tablicy
preg_match_all("#<([a-z]+)( .*)?(?!/)>#iU",$html,$result);
$openedtags=$result[1];
#umieszcza wszystkie zamknięte tagi w tablicy
preg_match_all("#</([a-z]+)>#iU",$html,$result);
$closedtags=$result[1];
$len_opened = count($openedtags);
# wszystkie tagi są zamknięte
if(count($closedtags) == $len_opened){
return $html;
}
$openedtags = array_reverse($openedtags);
# zamykanie tagów
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;
}