PHP htmlspecialchars()-funktio

Esimerkki

Muunna määritetyt merkit "<" (pienempi kuin) ja ">" (suurempi kuin) HTML-entiteiksi:

<?php
$str = "Tämä on jokin <b>lihavoitu</b> teksti.";
echo htmlspecialchars($str);
?>

以上代码的 HTML 输出如下(查看源代码):

<!DOCTYPE html>
<html>
<body>
Tämä on jokin <b>lihavoitu</b> teksti.
</body>
</html>

以上代码的浏览器输出:

Tämä on jokin <b>lihavoitu</b> teksti.

运行实例

Määrittely ja käyttö

htmlspecialchars()-funktio muuntaa määritetyt merkit HTML-entiteiksi.

Määritetyt merkit ovat:

  • & (ja) muuttuu &
  • " (kaksinkertainen lainausmerkki) muuttuu "
  • ' (yksinkertainen lainausmerkki) muuttuu '
  • < (pienempi kuin) muuttuu <
  • > (suurempi kuin) muuttuu >

Vinkki:Jos haluat muuntaa erityiset HTML-entiteetit takaisin merkeiksi, käytä htmlspecialchars_decode() Funktio.

Syntaksi

htmlspecialchars(string,flags,character-set,double_encode)
Parametrit Kuvaus
string Välttämätön. Määrittää muunnettavan merkkijonon.
flags

Valinnainen. Määrittää, miten lainausmerkit, virheellinen koodaus ja dokumenttipudos käsitellään, sekä käytettävä dokumenttipudos.

Käytettävissä olevat lainausmerkit:

  • ENT_COMPAT - Oletus. Vain kahden lainausmerkin koodaus.
  • ENT_QUOTES - Koodaa sekä kahden että yhden lainausmerkin.
  • ENT_NOQUOTES - Älä koodaa mitään lainausmerkkejä.

Virheellinen koodaus:

  • ENT_IGNORE - Ohita virheellinen koodaus eikä palauta tyhjää merkkijonoa. Vältä tämä, koska se voi vaikuttaa turvallisuuteen.
  • ENT_SUBSTITUTE - Korvaa virheellinen koodaus määritetulla merkkiä, joka sisältää Unicode korvausmerkin U+FFFD (UTF-8) tai &#FFFD;, eikä palauta tyhjää merkkijonoa. Palauta tyhjä merkkijonoa.
  • ENT_DISALLOWED - Korvaa määritetyn dokumenttipudoksen virheelliset merkkikohteet Unicode korvausmerkillä U+FFFD (UTF-8) tai &#FFFD;.

Määritellään käytettävän dokumentityypin lisäflags:in

  • ENT_HTML401 - Oletus. Käsitellään koodia HTML 4.01:nä.
  • ENT_HTML5 - Käsitellään koodia HTML 5:nä.
  • ENT_XML1 - Käsitellään koodia XML 1:nä.
  • ENT_XHTML - Käsitellään koodia XHTML:nä.
character-set

Valinnainen. Merkkijono, joka määrittää käytettävän merkistön.

Sallitut arvot:

  • UTF-8 - Oletus. ASCII-yhteensopiva 8-bittinen Unicode
  • ISO-8859-1 - Länsieurooppa
  • ISO-8859-15 - Länsieurooppa (siihen lisätty euromerkki + ISO-8859-1:stä puuttuvat ranskan ja suomen kirjaimet)
  • cp866 - DOS-omaiset kyrilliset merkistöt
  • cp1251 - Windows-omaiset kyrilliset merkistöt
  • cp1252 - Windows-omaiset länsieurooppalaiset merkistöt
  • KOI8-R - Venäjä
  • BIG5 - Kiinan kieli, käytetään pääasiassa Taiwanissa
  • GB2312 - Kiinan kieli, kansallinen standardimerkistö
  • BIG5-HKSCS - Laajennettu Big5, käytetään Hongkongissa
  • Shift_JIS - Japani
  • EUC-JP - Japani
  • MacRoman - Mac-käyttöjärjestelmän käyttämä merkistö

Huomautus:PHP 5.4:n edellisissä versioissa tunnistamattomat merkkikannat jätetään huomiotta ja korvataan ISO-8859-1:llä. PHP 5.4:stä lähtien tunnistamattomat merkkikannat jätetään huomiotta ja korvataan UTF-8:lla.

double_encode

Valinnainen.布尔值,määrittää, koodataanko olemassa olevat HTML-entiteetit.

  • TRUE - Oletus. Muunnetaan kaikki entiteetit.
  • FALSE - Ei koodata olemassa olevia HTML-entiteettejä.

Tekninen yksityiskohta

Palautusarvo:

Palauttaa muunnetun merkkijonon.

Jos string Jos sisältää virheellistä koodausmuotoa, palautetaan tyhjä merkkijono, ellei asetettu ENT_IGNORE tai ENT_SUBSTITUTE -merkkiä.

PHP-versio: 4+
Päivitysloki:

PHP 5:ssächaracter-set Parametarin oletusarvo muutettiin UTF-8:ksi.

PHP 5.4:ssä lisättiin: ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 ja ENT_XHTML.

PHP 5.3:ssä lisättiin ENT_IGNORE.

PHP 5.2.3:ssä lisättiin double_encode 参数。

在 PHP 4.1 中,新增了 character-set 参数。

更多实例

例子 1

把一些预定义的字符转换为 HTML 实体:

<?php
$str = "Bill & 'Steve'";
echo htmlspecialchars($str, ENT_COMPAT); // 只转换双引号
echo "<br>";
echo htmlspecialchars($str, ENT_QUOTES);// 转换双引号和单引号
echo "<br>";
echo htmlspecialchars($str, ENT_NOQUOTES); // 不转换任何引号
?>

以上代码的 HTML 输出如下(查看源代码):

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

以上代码的浏览器输出:

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

运行实例

例子 2

把双引号转换为 HTML 实体:

<?php
$str = 'I love "PHP".';
echo htmlspecialchars($str, ENT_QUOTES); // 转换双引号和单引号
?>

以上代码的 HTML 输出如下(查看源代码):

<!DOCTYPE html>
<html>
<body>
I love "PHP"
</body>
</html>

以上代码的浏览器输出:

I love "PHP".

运行实例