htmlspecialchars în PHP

Transformă caracterele speciale HTML în entități, ca textul să fie afișat în siguranță în pagină.

Sintaxă
htmlspecialchars(string $text, int $optiuni = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, ?string $codare = null): string

Ce face htmlspecialchars

Orice text primit de la utilizatori (comentarii, nume, câmpuri de căutare) trebuie trecut prin htmlspecialchars înainte de a fi afișat. Altfel, cineva poate introduce cod JavaScript care rulează în browserul vizitatorilor. Acest atac se numește XSS.

Funcția transformă &, <, >, " și ' în entități HTML, care se afișează ca text, nu se execută.

Parametri

Parametru Descriere
$text Textul de protejat.
$optiuni Opțional. Implicit, în PHP 8 sunt convertite și ghilimelele simple și duble.
$codare Opțional. Codarea textului. Implicit UTF-8.

Ce returnează

Textul sigur pentru afișare în HTML.

Exemple

Exemplul 1: Neutralizarea unui script

<?php
$comentariu = '<script>alert("hack")</script>';

echo htmlspecialchars($comentariu);

Rezultat

&lt;script&gt;alert(&quot;hack&quot;)&lt;/script&gt;

Exemplul 2: Valoare într-un atribut HTML

<?php
$cautare = 'telefon "ieftin"';

echo '<input value="' . htmlspecialchars($cautare) . '">';

Rezultat

<input value="telefon &quot;ieftin&quot;">

Greșeli frecvente

  • Afișezi direct $_GET sau $_POST cu echo. Este cea mai frecventă vulnerabilitate de securitate în site-urile PHP.
  • Aplici funcția de două ori și în pagină apare &amp;. Protejează textul o singură dată, chiar înainte de afișare.

Comenzi înrudite

  • echo: Afișează unul sau mai multe texte sau valori în pagină.
  • trim: Elimină spațiile (sau alte caractere) de la începutul și sfârșitul unui text.
  • str_replace: Înlocuiește toate aparițiile unui text cu alt text.