Kilka dni temu usiadłem i napisałem funkcję, która przeszukuje stringa w poszukiwaniu niedozwolonych tagów HTML i je wycina. Przydatna sprawa, jeśli chcemy dać użytkownikowi możliwość formatowania tekstu na stronie a nie chcemy używać bbCode ani być narażonym na złośliwości z jego strony (np. wklejenie brzydkiego kodu JavaScript
)
function htmltags($string) { // tablica dozwolonych tagów $allowed=Array('a','img','b','i','u'); // główna pętla szukająca w ciągu znaków początku tagu (<) for ($licz=0; $licz<strlen($string); $licz++) { if ($string[$licz]=='<') { $dozwolony=0; // sprawdza, czy kolejne znaki po znaku < odpowiadają któremuś z dozwolonych tagów for ($liczy=0; $liczy<count($allowed); $liczy++) { $tag=substr($string,$licz+1,strlen($allowed[$liczy])); if ($string[$licz+1]=='/') $tag=substr($string,$licz+2,strlen($allowed[$liczy])); //echo $tag."<br>"; //echo $string[$licz+1+strlen($allowed[$liczy])]."<br>"; if ($tag==$allowed[$liczy]) { if (($string[$licz+1+strlen($allowed[$liczy])]=='>') ||($string[$licz+2+strlen($allowed[$liczy])]=='>') ||($string[$licz+1+strlen($allowed[$liczy])]==' ') ||($string[$licz+2+strlen($allowed[$liczy])]==' ')) { $dozwolony=1; break; } } } if ($dozwolony==0) { for ($licznik=$licz; $licznik<strlen($string); $licznik++) { if ($string[$licznik]=='>') { $string[$licznik]=' '; break; } $string[$licznik]=' '; } } } } $string=str_replace(' ',' ',$string); return $string; }

Nawymyślałem się, a nie wiedziałem, że PHP ma już zaimplementowaną taką funkcję.
string strip_tags ( string $str [, string $allowable_tags ] )
przykład użycia:
$string=strip_tags($string,”<b><i><u>”);