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;。

ການກໍານົດ flags ສຳລັບຮູບແບບເອກະສານທີ່ໃຊ້

  • ENT_HTML401 - ຄັ້ງຄືນ. HTML 4.01
  • ENT_HTML5 - HTML 5
  • ENT_XML1 - XML 1
  • ENT_XHTML - ກົດໝາຍ XHTML
character-set

ຄຳລົງຄຳນວຍຄວາມ. ຄຳນວຍຄວາມທີ່ກໍານົດຄວາມສະເພາະທີ່ຈະໃຊ້

ຄວາມສະເພາະທີ່ອະນຸຍາດ

  • UTF-8 - ຄັ້ງຄືນ. ASCII ທີ່ສາມາດກະຈາຍ Unicode 8-bit
  • ISO-8859-1 - Western Europe
  • ISO-8859-15 - ຄວາມສະເພາະທີ່ໃຊ້ໃນ Western Europe (ທີ່ມີສີສະຫຼາດ Euro Symbol + French and Finnish letters ທີ່ສູນຫຼາຍຈາກ ISO-8859-1)
  • cp866 - ຄວາມສະເພາະ Cyrillic ທີ່ໃຊ້ໃນ DOS
  • cp1251 - ຄວາມສະເພາະ Cyrillic ທີ່ໃຊ້ໃນ Windows
  • cp1252 - ຄວາມສະເພາະເພື່ອທີ່ໃຊ້ໃນ Windows
  • KOI8-R - ພາສາລຸິສ
  • BIG5 - ພາສາຈີນພາຍ, ສໍາລັບການໃຊ້ໃນໄຕ້
  • GB2312 - ພາສາຈີນປົກກະພັນ, ຄວາມສະເພາະພາສາຈີນປົກກະພັນ
  • BIG5-HKSCS - Big5 ທີ່ມີການຂະຫຍາຍສະເພາະທີ່ມີໃນຮູບແບບ Hong Kong
  • Shift_JIS - ພາສາຍີປຸ່ນ
  • EUC-JP - ພາສາຍີປຸ່ນ
  • MacRoman - ຄວາມສະເພາະທີ່ໃຊ້ໃນລະບົບ Mac

ຄວາມຄິດເຫັນ:ໃນຮູບແບບ PHP 5.4 ກ່ອນນັ້ນ ຄວາມສະເພາະທີ່ບໍ່ສາມາດຮັບຮູ້ໄດ້ຈະຖືກທຳລາຍໂດຍ ISO-8859-1. ຕັ້ງແຕ່ PHP 5.4 ຄວາມສະເພາະທີ່ບໍ່ສາມາດຮັບຮູ້ໄດ້ຈະຖືກທຳລາຍໂດຍ UTF-8。

double_encode

ຄຳລົງຄຳນວຍຄວາມ. ບໍ່ມີຄວາມສະເພາະທີ່ບໍ່ມີຄວາມກະຈາຍຄວາມສະເພາະທີ່ມີແຕ່ຢູ່

  • TRUE - ຄັ້ງຄືນ. ຈະປ່ຽນຄວາມສະເພາະທຸກຢ່າງ
  • FALSE - ຈະບໍ່ປ່ຽນຄວາມສະເພາະ HTML ທີ່ມີແຕ່ຢູ່

ຂໍ້ມູນດ້ານເຕັກນິກ

ຜົນກະທົບ

ກັບຄືນຄຳນວຍຄວາມທີ່ໄດ້ປ່ຽນ

ຖ້າ string ມີການການວັດແທກຄວາມສະເພາະທີ່ບໍ່ມີຄວາມກະຈາຍຄວາມສະເພາະແລ້ວຈະກັບຄືນເປັນຄຳສັບປະສົມຄຳນວຍຄວາມທີ່ບໍ່ມີຄວາມກະຈາຍຄວາມສະເພາະທີ່ໄດ້ກະຕຸ້ມ ENT_IGNORE ຫຼື ENT_SUBSTITUTE。

PHP ຮູບແບບ 4+
ບັນທຶກການປັບປຸງ

ໃນ PHP 5character-set ຈຸດສະນະຂອງຄຳນວຍຄວາມສະເພາະໄດ້ປ່ຽນເປັນ UTF-8。

ໃນ PHP 5.4 ພະລັງງານໄດ້ຕື່ມ: ENT_SUBSTITUTE、ENT_DISALLOWED、ENT_HTML401、ENT_HTML5、ENT_XML1 ແລະ ENT_XHTML。

ໃນ PHP 5.3 ພະລັງງານໄດ້ຕື່ມ ENT_IGNORE。

ໃນ PHP 5.2.3 ພະລັງງານໄດ້ຕື່ມເພີ່ມ double_encode ປະເພດ

ໃນ PHP 4.1, ໄດ້ຕັ້ງມາ character-set ປະເພດ

ຕົວຢ່າງຫຼາຍກວ່າ

ຕົວຢ່າງ 1

ປ່ຽນການບັນທຶກຄຳວ່າງທີ່ມີການບັນທຶກຄຳວ່າງທີ່ຄວບຄຸມຄຳວ່າງໄດ້ປະກອບເປັນ HTML Entity:

<?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 Entity:

<?php
$str = 'I love "PHP".';
echo htmlspecialchars($str, ENT_QUOTES); // ປ່ຽນການບັນທຶກຄຳວ່າງທີ່ມີການບັນທຶກຄຳວ່າງ
?>

ການສະແດງ HTML ຂອງລະບຽບຂັ້ນນີ້ (ກວດກາລະບຽບແຫຼ່ງ):

<!DOCTYPE html>
<html>
<body>
ຂ້ອຍມັກ "PHP".
</body>
</html>

ການສະແດງຂອງວິດີໂອຂອງລະບຽບຂັ້ນນີ້:

ຂ້ອຍມັກ "PHP".

ການດຳເນີນການ