Atunci când prelucrezi date trimise de utilizatori prin formulare web (de exemplu, printr-un câmp de tip <textarea>), este esențial să elimini orice script JavaScript potențial periculos sau etichete HTML nedorite înainte de a salva ori afișa informația.
În PHP, funcția standard pusă la dispoziție pentru curățarea codului HTML este strip_tags(). Cu toate acestea, în funcție de cerințe, există situații când o filtrare avansată cu expresii regulate este utilă.
Utilizarea funcției native strip_tags()
Cea mai rapidă și simplă metodă de a elimina etichetele HTML dintr-un șir de caractere este funcția nativă strip_tags():
$continut_brut = "<p>Acesta este un <strong>text formatat</strong> cu <a href='#'>link</a>.</p>";
$text_curat = strip_tags($continut_brut);
echo $text_curat;
// Rezultat: "Acesta este un text formatat cu link."
Dacă dorești să permiți anumite etichete (de exemplu doar <strong> sau <b>), poți specifica etichetele permise ca al doilea argument:
$text_permis = strip_tags($continut_brut, '<strong><b>');
Filtrare avansată cu expresii regulate (eliminare scripturi și stiluri)
Deși strip_tags() îndepărtează etichetele în sine, dacă un utilizator introduce blocuri complete de tip <script>alert('test');</script> sau <style>body {display:none;}</style>, conținutul dintre etichete poate rămâne vizibil în text. Pentru a șterge complet atât etichetele, cât și codul JavaScript sau stilurile CSS incluse, putem construi o funcție personalizată bazată pe preg_replace():
function strings_html2txt($document) {
$search = array(
'@<script[^>]*?>.*?</script>@si', // Elimină complet scripturile JavaScript
'@<style[^>]*?>.*?</style>@siU', // Elimină stilurile CSS interne
'@<[\/\!]*?[^<>]*?>@si' // Elimină orice etichetă HTML rămasă
);
$text = preg_replace($search, '', $document);
return trim($text);
}
Cum funcționează această funcție:
- Primul tipar identifică și șterge întregul bloc
<script>...</script>, inclusiv codul executabil din interior; - Al doilea tipar elimină blocurile
<style>...</style>; - Al treilea tipar șterge orice altă etichetă HTML sau comentariu XML rămas în șirul de caractere;
- Funcția returnează textul simplu, curat și pregătit pentru stocare sau procesare.
Notă de securitate: Pentru afișarea în siguranță în pagină a datelor preluate de la utilizatori și prevenirea atacurilor de tip XSS (Cross-Site Scripting), folosește întotdeauna și funcția htmlspecialchars().
sal am un cod html de pe http://www.peteava.ro
il iau il postez pe blog dar imi apare sus peteava.ro ceva ca o emblema .
nu stiu cum sa fac sa nu mai apara .imi poti spune
codul HTML e asta.
Vezi mai multe peTeava.ro