Convertire da/a entità HTML

Gli argomenti di questa pagina

  • La funzione htmlentities()
  • La funzione html_entity_decode()
  • La funzione htmlspecialchars()
  • La funzione htmlspecialchars_decode()
  • La funzione strip_tags()

Può capitare di dover eliminare o nascondere i tags Html da una variabile stringa o, al contrario, ripristinare i tag HTML.
Ad esempio nella programmazione di un forum è possibile così disattivare l'inserimento di link spam da parte degli utenti. In Php esistono alcune utili finzioni per far questo.

La funzione htmlentities()

La funzione htmlentities() converte i caratteri in entità HTML

La sintassi: htmlentities(string, [quotestyle], [character-set])
L'argomento facoltativo quotestyle può assumere il valore di una delle seguenti costanti:
ENT_COMPAT che converte gli apici doppi e lascia inalterati gli apici singoli.
ENT_QUOTES che converte sia gli apici doppi sia gli apici singoli.
ENT_NOQUOTES che lascia entrambi i tipi di apici inalterati.
Il terzo parametro non rivela particolare utilità

Qui di seguito un piccolo esempio. Commentato nel riquadro di sinistra, viene visualizzato come la stringa viene trasformata nel browser.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$my_string 
"Ciao <a href='bububu.sito.ext/boh.php'>puoi andare \"qui\"</a>";
echo 
"Stringa originale stamperebbe un link cliccabile che qui non stampo<br />\n";
echo 
htmlentities $my_string ) . "<br />\n";    // default ENT_COMPAT
echo htmlentities $my_stringENT_QUOTES) . "<br />\n";
echo 
htmlentities$my_stringENT_NOQUOTES) . "<br />\n";
/*
nel browser, invece di stampare il link come ci si aspetterebbe,
viene semplicemente visualizzata la stringa così come scritta

Ciao &lt;a href='bububu.sito.ext/boh.php'&gt;puoi andare &quot;qui&quot;&lt;/a&gt;
Ciao &lt;a href=&#039;bububu.sito.ext/boh.php&#039;&gt;puoi andare &quot;qui&quot;&lt;/a&gt;
Ciao &lt;a href='bububu.sito.ext/boh.php'&gt;puoi andare "qui"&lt;/a&gt;
*/
?>

 

Stringa originale stamperebbe un link cliccabile che qui non stampo
Ciao <a href='bububu.sito.ext/boh.php'>puoi andare "qui"</a>
Ciao <a href='bububu.sito.ext/boh.php'>puoi andare "qui"</a>
Ciao <a href='bububu.sito.ext/boh.php'>puoi andare "qui"</a>

 

La funzione html_entity_decode()

La funzione html_entity_decode() è l'opposto della funzione htmlentities(). La funzione converte le entità HTML nei rispettivi caratteri.

La sintassi è: html_entity_decode(string,quotestyle,character-set)
L'argomento facoltativo quotestyle specifica come decodificare gli apici singoli e doppi.
I quotestyle disponibili sono:
ENT_COMPAT - Valore di Default. Decodifica gli apici doppi lasciando inalterati gli apici singoli
ENT_QUOTES - Decodifica sia apici doppi che singoli
ENT_NOQUOTES - Lascia entrambi inalterati

Qui sotto un piccolo esempio. Non cliccare sui link mostrati nell'esempio qui sotto. Sono solo dimostrativi e non portano da nessuna parte.

1
2
3
4
5
6
<?php
$stringa 
"Ciao &lt;a href='bububu.sito.ext/boh.php'&gt;non andare &quot;qui&quot;&lt;/a&gt;";
echo 
html_entity_decode($stringa) . "<br />\n";
echo 
html_entity_decode($stringaENT_QUOTES) . "<br />\n";
echo 
html_entity_decode($stringaENT_NOQUOTES) . "<br />\n";
?>

 

Questo è quel che viene generato con la funzione:
Ciao <a href='bububu.sito.ext/boh.php'>non andare "qui"</a><br />
Ciao <a href='bububu.sito.ext/boh.php'>non andare "qui"</a><br />
Ciao <a href='bububu.sito.ext/boh.php'>non andare &quot;qui&quot;</a><br />

 

La funzione htmlspecialchars()

La funzione htmlspecialchars() è simile alla funzione htmlentities(). Converte in entità HTML alcuni specifici caratteri:
& => &amp;
" => &quot;
' => &#039;
< => &lt;
> => &gt;

La sintassi è: htmlspecialchars(string,quotestyle,character-set)
L'argomento facoltativo quotestyle può assumere il valore di una delle seguenti costanti:
ENT_COMPAT che converte gli apici doppi e lascia inalterati gli apici singoli.
ENT_QUOTES che converte sia gli apici doppi sia gli apici singoli.
ENT_NOQUOTES che lascia entrambi i tipi di apici inalterati.
Il terzo parametro non rivela particolare utilità

Qui di seguito un esempio

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$my_string 
"<p>In questa <span class=\"rosso_b\">stringa</span> &egrave; <i>presente</i> 
una immagine <img src=\"images/book_1.png\" alt=\"logo\" border=\"0\" /></p>"
;
echo 
"la stringa originale:<br />\n";
echo 
$my_string "<hr />\n";
echo 
"Qui di seguito le prove della funzione:<br />\n";
echo 
htmlspecialchars ($my_string) . "<hr />\n";
echo 
htmlspecialchars($my_stringENT_COMPAT) . "<hr />\n";
echo 
htmlspecialchars($my_stringENT_QUOTES) . "<hr />\n";
echo 
htmlspecialchars($my_stringENT_NOQUOTES) . "<hr />\n";
?>

 

la stringa originale:

In questa stringa è presente una immagine logo


Qui di seguito le prove della funzione:
<p>In questa <span class="rosso_b">stringa</span> &egrave; <i>presente</i> una immagine <img src="images/book_1.png" alt="logo" border="0" /></p>
<p>In questa <span class="rosso_b">stringa</span> &egrave; <i>presente</i> una immagine <img src="images/book_1.png" alt="logo" border="0" /></p>
<p>In questa <span class="rosso_b">stringa</span> &egrave; <i>presente</i> una immagine <img src="images/book_1.png" alt="logo" border="0" /></p>
<p>In questa <span class="rosso_b">stringa</span> &egrave; <i>presente</i> una immagine <img src="images/book_1.png" alt="logo" border="0" /></p>

 

La funzione htmlspecialchars_decode()

La funzione htmlspecialchars_decode è l'opposto della funzione htmlspecialchars(). La funzione converte le entità HTML nei rispettivi caratteri.
&amp; => &
&quot; => "
&#039; => '
&lt; => <
&gt; => >

La sintassi è: htmlspecialchars(string,quotestyle,character-set)
L'argomento facoltativo quotestyle può assumere il valore di una delle seguenti costanti:
ENT_COMPAT che converte gli apici doppi e lascia inalterati gli apici singoli.
ENT_QUOTES che converte sia gli apici doppi sia gli apici singoli.
ENT_NOQUOTES che lascia entrambi i tipi di apici inalterati.
Il terzo parametro non rivela particolare utilità

Qui di seguito un esempio

1
2
3
4
5
6
7
<?php
$stringa 
"&lt;img src=&quot;images/book_1.png&quot; alt=&quot;logo&quot; title=&quot;il mikevba logo sezione&quot; border=&quot;0&quot; /&gt;";
echo 
$stringa "<br />\n";
echo 
htmlspecialchars_decode($stringa) . "<br />\n";
echo 
htmlspecialchars_decode($stringaENT_QUOTES) . "<br />\n";
//echo htmlspecialchars_decode($stringa, ENT_NOQUOTES) . "<br />\n";    //    questa riga invalida il codice della pagina
?>

 

<img src="images/book_1.png" alt="logo" title="il mikevba logo sezione" border="0" />
logo
logo

il sorgente prodotto è il seguente:
<img src="images/book_1.png" alt="logo" title="il mikevba logo sezione" border="0" /><br />
<img src="images/book_1.png" alt="logo" title="il mikevba logo sezione" border="0" /><br />
<img src=&quot;images/book_1.png&quot; alt=&quot;logo&quot; title=&quot;il mikevba logo sezione&quot; border=&quot;0&quot; /><br />

 

La funzione strip_tags()

La funzione strip_tags() restituisce una stringa privata di tutti i tag HTML.

La sintassi: strip_tags(string, [consenti])
Il secondo parametro, opzionale, indica il tag o i tag da conservare

Nell'esempio qui sotto si vede la funzione in azione:
elimino tutti i tag
conservo i tag <span><i> ma elimino gli altri
conservo il tag <img> ma elimino gli altri

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$my_string 
"<p>In questa <span class=\"rosso_b\">stringa</span> &egrave; <i>presente</i> una immagine 
<img src=\"images/book_1.png\" alt=\"logo\" border=\"0\" /></p>"
;
echo 
"La stringa originale<br />\n";
echo 
$my_string "<br />\n";
echo 
"Primo test: elimino tutti i tag<br />\n";
echo 
"1): " strip_tags ($my_string) . "<br />\n";
echo 
"Secondo test: conservo span e i<br />\n";
echo 
"2): " strip_tags ($my_string'<span><i>') . "<br />\n";
echo 
"Terzo test: conservo img<br />\n";
echo 
"3): " strip_tags ($my_string'<img>') . "<br />\n";
$my_link "<a href=\"http://nome_sito.boh/nomefile.html\" title=\"qualcosa\">clicca qui</a>";
echo 
"Converto un link in entit&agrave; HTML:<br />\n";
echo 
htmlspecialchars($my_link) . "<br />\n";
echo 
"Quarto test: elimino il link conservando la sola didascalia<br />\n";
echo 
"4): " strip_tags ($my_link) . "<br />\n";
?>

 

La stringa originale

In questa stringa è presente una immagine logo


Primo test: elimino tutti i tag
1): In questa stringa è presente una immagine
Secondo test: conservo span e i
2): In questa stringa è presente una immagine
Terzo test: conservo img
3): In questa stringa è presente una immagine logo
Converto un link in entità HTML:
<a href="http://nome_sito.boh/nomefile.html" title="qualcosa">clicca qui</a>
Quarto test: elimino il link conservando la sola didascalia
4): clicca qui

 

 



settore tecnico il sito di lorettabweb il Forum di sostegno
il forum il forum il forum