PHP htmlspecialchars() 函数

实例

将预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体:

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

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

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

以上代码的浏览器输出:

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

运行实例

定义和用法

htmlspecialchars() 函数将预定义的字符转换为 HTML 实体。

预定义的字符是:

  • & (和号)成为 &
  • " (双引号)成为 "
  • ' (单引号)成为 '
  • < (小于)成为 <
  • > (大于)成为 >

提示:如需将特殊的 HTML 实体转换回字符,请使用 htmlspecialchars_decode() 函数。

语法

htmlspecialchars(string,flags,character-set,double_encode)
参数 描述
string 必需。规定要转换的字符串。
flags

可选。规定如何处理引号、无效的编码以及使用哪种文档类型。

可用的引号类型:

  • ENT_COMPAT - 默认。仅编码双引号。
  • ENT_QUOTES - 编码双引号和单引号。
  • ENT_NOQUOTES - 不编码任何引号。

无效的编码:

  • ENT_IGNORE - 忽略无效的编码,而不是让函数返回一个空字符串。应尽量避免,因为这可能对安全性有影响。
  • ENT_SUBSTITUTE - 将无效的编码替换为一个指定的带有 Unicode 替代字符 U+FFFD(UTF-8)或 &#FFFD; 的字符,而不是返回一个空字符串。
  • ENT_DISALLOWED - 将指定文档类型中的无效代码点替换为 Unicode 替代字符 U+FFFD(UTF-8)或 &#FFFD;。

Tanda ng dagdag na flags na nasaanyo sa gamit na uri ng dokumento:

  • ENT_HTML401 - Default. Gagawing HTML ang code bilang HTML 4.01.
  • ENT_HTML5 - Gagawing HTML ang code bilang HTML 5.
  • ENT_XML1 - Gagawing XML ang code bilang XML 1.
  • ENT_XHTML - Gagawing XML ang code bilang XHTML.
character-set

Optional. Ang string na nasaanyo ng charset na gagamitin.

Pinapayagan na halaga:

  • UTF-8 - Default. 8-bit Unicode na kompatibo sa ASCII
  • ISO-8859-1 - Western Europe
  • ISO-8859-15 - Western Europe (nagdagdag ng simbolo ng euro + na nawala sa ISO-8859-1 na mga simbolo ng Pranses at Finnish)
  • cp866 - Charset ng DOS na para sa Cyrillic
  • cp1251 - Charset ng Windows na para sa Cyrillic
  • cp1252 - Charset ng Windows na para sa Western Europe
  • KOI8-R - Hapon
  • BIG5 - Han Tradicional, pangunahing ginagamit sa Taiwan
  • GB2312 - Han Simplificado, pambansang charset ng Tsina
  • BIG5-HKSCS - Big5 na may pagpapalawak sa Hong Kong
  • Shift_JIS - Hapones
  • EUC-JP - Hapones
  • MacRoman - Charset na ginagamit ng Mac OS

Komento:Sa mga bersyon ng PHP bago ang 5.4, ang hindi matukoy na charset ay hindi matutukoy at pinalitan ng ISO-8859-1. Mula sa PHP 5.4, ang hindi matukoy na charset ay hindi matutukoy at pinalitan ng UTF-8.

double_encode

Optional. Boolean na nasaanyo kung gagawing encoding ang umiiral na HTML entity.

  • TRUE - Default. gagawing pagbabagong bawat entity.
  • FALSE - Hindi gagawing encoding ang mga umiiral na HTML entity.

Detalye ng teknolohiya

Halaga ng ibabalik:

Iibalik ang nabawasan na string.

Kung string Kung mayroong walang kahulugan na encoding, ibabalik ang isang walang laman na string, maliban kung ito ay naitala ang mga tanda ng ENT_IGNORE o ENT_SUBSTITUTE.

Versyon ng PHP: 4+
Talaan ng pagbabago:

Sa PHP 5,character-set Ang default na halaga ng parameter ay binago sa UTF-8.

Sa PHP 5.4, nabigyan ng: ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 at ENT_XHTML.

Sa PHP 5.3, nabigyan ng ENT_IGNORE.

Sa PHP 5.2.3, nabigyan ng bagong 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".

运行实例