PHP htmlspecialchars() funktion

Eksempel

Konverter foruddefinerede tegn "<" (mindre end) og ">" (større end) til HTML-entiteter:

<?php
$str = "This is some <b>bold</b> text.";
echo htmlspecialchars($str);
?>

HTML-outputtet for ovenstående kode er som følger (se kildekode):

<!DOCTYPE html>
<html>
<body>
This is some <b>bold</b> text.
</body>
</html>

Browserens output af ovenstående kode:

This is some <b>bold</b> text.

Kør eksempel

Definition og brug

Funktionen htmlspecialchars() konverterer foruddefinerede tegn til HTML-entiteter.

Foruddefinerede tegn er:

  • & (og-tegn) bliver til &
  • " (dobbelt citationstegn) bliver til "
  • ' (enkel citationstegn) bliver til '
  • < (mindre end) bliver til <
  • > (større end) bliver til >

Vedvisning:For at konvertere specielle HTML-entiteter til tegn, brug htmlspecialchars_decode() Funktion.

Syntaks

htmlspecialchars(string,flags,character-set,double_encode)
Parameter Beskrivelse
string Obligatorisk. Angiv den streng, der skal konverteres.
flags

Valgfri. Angiv hvordan citationstegn, ugyldige tegnsætter og hvilken dokumenttype skal håndteres.

Tilgængelige citationstegn typer:

  • ENT_COMPAT - Standard. Kodecér kun dobbelte citationstegn.
  • ENT_QUOTES - Kodecér både dobbelte og enkelte citationstegn.
  • ENT_NOQUOTES - Kodecér ingen citationstegn.

Ugyldige tegnsætter:

  • ENT_IGNORE - Ignorer ugyldige tegnsætter i stedet for at få funktionen til at returnere en tom streng. Undgå dette, da det kan have sikkerhedsmæssige konsekvenser.
  • ENT_SUBSTITUTE - Erstat ugyldig encoding med en angivet tegn med Unicode-erstatningstegn U+FFFD (UTF-8) eller &#FFFD; i stedet for at returnere en tom streng.
  • ENT_DISALLOWED - Erstatte ugyldige tegnsætter i angivne dokumenttyper med Unicode-erstatningstegn U+FFFD (UTF-8) eller &#FFFD;.

Definerer ekstra flags for den brugte dokumenttype:

  • ENT_HTML401 - Standard. Behandles som HTML 4.01-kode.
  • ENT_HTML5 - Behandles som HTML 5-kode.
  • ENT_XML1 - Behandles som XML 1-kode.
  • ENT_XHTML - Behandles som XHTML-kode.
character-set

Valgfri. En streng, der angiver den tegnsæt, der skal bruges.

Tilladte værdier:

  • UTF-8 - Standard. ASCII-kompatibel 8-bits Unicode
  • ISO-8859-1 - Vestlig Europa
  • ISO-8859-15 - Vestlig Europa (inkluderer euro symbol + de franske og finske bogstaver, der mangler i ISO-8859-1)
  • cp866 - DOS-tilpasset kyrillisk tegnsæt
  • cp1251 - Windows-tilpasset kyrillisk tegnsæt
  • cp1252 - Windows-tilpasset vestlig Europa tegnsæt
  • KOI8-R - Russisk
  • BIG5 - Traditionel kinesisk, brugt hovedsageligt i Taiwan
  • GB2312 - Kinesisk, national standard tegnsæt
  • BIG5-HKSCS - Big5 med kinesisk Hong Kong-udvidelse
  • Shift_JIS - Japansk
  • EUC-JP - Japansk
  • MacRoman - Tegnsæt brugt af Mac-operativsystemet

Kommentar:Før PHP 5.4 versioner blev ikke genkendte tegnsætter ignoreret og erstattet med ISO-8859-1. Fra PHP 5.4 blev ikke genkendte tegnsætter ignoreret og erstattet med UTF-8.

double_encode

Valgfri. Boolsk værdi, der angiver om eksisterende HTML-entiteter skal kodes.

  • TRUE - Standard. Konverterer hver entitet.
  • FALSE - Vil ikke kode eksisterende HTML-entiteter.

Tekniske detaljer

Returværdi:

Returns den konverterede streng.

Hvis string Hvis der er inkluderet ugyldige koder, returns en tom streng, medmindre ENT_IGNORE eller ENT_SUBSTITUTE flaget er sat.

PHP version 4+
Opdateringslog

I PHP 5character-set Standardværdien for parameteren ændres til UTF-8.

I PHP 5.4 blev følgende tilføjet: ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 og ENT_XHTML.

I PHP 5.3 blev ENT_IGNORE tilføjet.

I PHP 5.2.3 blev der tilføjet double_encode Parameter.

I PHP 4.1 blev der tilføjet character-set Parameter.

Flere eksempler

Eksempel 1

Konverter nogle prædefinerede tegn til HTML-entiteter:

<?php
$str = "Bill & 'Steve'";
echo htmlspecialchars($str, ENT_COMPAT); // Kun konverter dobbelte anførselstegn
echo "<br>";
echo htmlspecialchars($str, ENT_QUOTES);// Konverter dobbelte anførselstegn og enkelt anførselstegn
echo "<br>";
echo htmlspecialchars($str, ENT_NOQUOTES); // Konverter ingen anførselstegn
?>

HTML-outputtet for ovenstående kode er som følger (se kildekode):

<!DOCTYPE html>
<html>
<body>
Bill & 'Steve'<br>
Bill & 'Steve'<br>
Bill & 'Steve'
</body>
</html>

Browserens output af ovenstående kode:

Bill & 'Steve'
Bill & 'Steve'
Bill & 'Steve'

Kør eksempel

Eksempel 2

Konverter dobbelte anførselstegn til HTML-entiteter:

<?php
$str = 'I love "PHP".';
echo htmlspecialchars($str, ENT_QUOTES); // Konverter dobbelte anførselstegn og enkelt anførselstegn
?>

HTML-outputtet for ovenstående kode er som følger (se kildekode):

<!DOCTYPE html>
<html>
<body>
Jeg elsker "PHP".
</body>
</html>

Browserens output af ovenstående kode:

Jeg elsker "PHP".

Kør eksempel