Problema con la funzione htmlspecialchars()

Salve ragazzi, ho un problema con questa funzione. In sintesi ho il seguente codice:

$val = "HTML&<b>PHP</b>";

echo htmlspecialchars($val);

echo htmlspecialchars($val, ENT_QUOTES, "ISO8859-1");

echo htmlspecialchars($val, ENT_QUOTES, "ISO8859-15");

echo htmlspecialchars($val, ENT_QUOTES, "UTF-8");

che stampa sempre:

HTML&<b>PHP</b>

HTML&<b>PHP</b>

HTML&<b>PHP</b>

HTML&<b>PHP</b>

Ma non dovrebbe effettuare la conversione di & in &amp e di < in &lt............???

Ho dimenticando qualcosa ?

inviato 7 anni fa
whitewolf11
X 0 X

Quella la stampa browser o la vista del sorgente della pagina che hai richiamato col browser? O per caso hai fatto un output su terminale?

risposto 7 anni fa
Mario Santagiuliana
X 0 X

E' la stampa su browser.

risposto 7 anni fa
whitewolf11
X 0 X

Guarda il sorgente della pagina. ;)

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Cio????

Ripeto, il sorgente :

<?php

$val = "HTML&<b>PHP</b>";

echo htmlspecialchars($val);

echo htmlspecialchars($val, ENT_QUOTES, "ISO8859-1");

echo htmlspecialchars($val, ENT_QUOTES, "ISO8859-15");

echo htmlspecialchars($val, ENT_QUOTES, "UTF-8");

?>

Lo mando in esecuzione e sul browser esce:

HTML&<b>PHP</b>

HTML&<b>PHP</b>

HTML&<b>PHP</b>

HTML&<b>PHP</b>

risposto 7 anni fa
whitewolf11
X 0 X

Nel tuo browser web guarda il sorgente della pagina!!

Se hai firefox: visualizza->sorgente pagina.

In IE una cosa simile.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Con Firefox:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>Documento senza titolo</title>

</head>

<body>

HTML&amp;&lt;b&gt;PHP&lt;/b&gt;HTML&amp;&lt;b&gt;PHP&lt;/b&gt;HTML&amp;&lt;b&gt;PHP&lt;/b&gt;HTML&amp;&lt;b&gt;PHP&lt;/b&gt;

</body>

</html>

Beh mi s allora che non ci ho capito niente......

Ma la conversione non la si dovrebbe vedere in output ?

Cio nel senso che l'istruzione echo htmlspecialchars($val); produce la stampa nel browser di HTML&amp;&lt;b&gt ?

risposto 7 anni fa
whitewolf11
modificato 7 anni fa
X 0 X

Beh mi s allora che non ci ho capito niente......

Ma la conversione non la si dovrebbe vedere in output ?

Cio nel senso che l'istruzione echo htmlspecialchars($val); produce la stampa nel browser di HTML&amp;&lt;b&gt ?

Il browser interpreta i codici speciali html: "&amp;" , "&lt;", "&gt;" e nella sua finestra di visualizzazione mostra l'output "umanizzato" della pagina, non il codice sorgente della pagina html.

Il tuo codice php funziona correttamente, il tuo browser pure in quando fa visualizzare correttamente i codici speciali html.

Qui puoi trovare un elenco di codici speciali:

http://www.w3schools.com/tags/ref_entities.asp

Spero di averti chiarito un po' le idee... :bye:

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Si effettivamente ho fatto confusione, ora tutto pi chiaro! Grazie MarioS! ;)

risposto 7 anni fa
whitewolf11
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda