ฟังก์ชัน 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:

  • กำหนด flags ที่เพิ่มเติมสำหรับประเภทเอกสารที่ใช้
  • ENT_HTML401 - ปริยาย จะจัดการรหัสเป็น HTML 4.01
  • ENT_HTML5 - จะจัดการรหัสเป็น HTML 5
  • ENT_XML1 - จะจัดการรหัสเป็น XML 1
character-set

ENT_XHTML - จะจัดการรหัสเป็น XHTML

ตัวเลือก ศัพท์ที่กำหนดระบบการเข้ารหัสที่ใช้

  • ค่าที่อนุญาต:
  • UTF-8 - ปริยาย อนุญาตให้ ASCII ควบคุม 8 บิต Unicode
  • ISO-8859-1 - ยุโรปตะวันตก
  • ISO-8859-15 - ยุโรปตะวันตก (เพิ่มสัญลักษณ์เงินยุโรป + ตัวอักษรฝรั่งเศสและฟินแลนด์ที่ขาดใน ISO-8859-1)
  • cp866 - ตัวเขาตัวละครที่ใช้โดย DOS สำหรับ Cyrillic
  • cp1251 - ตัวเขาตัวละครที่ใช้โดย Windows สำหรับ Cyrillic
  • cp1252 - ตัวเขาตัวละครที่ใช้โดย Windows สำหรับยุโรปตะวันตก
  • KOI8-R - รัสเซีย
  • BIG5 - ฮองกงฉบับ ใช้งานหลักในไต้หวัน
  • GB2312 - ฮองกงฉบับประมาณ มีมาตราฐานของจีน
  • BIG5-HKSCS - Big5 ที่มีการขยายแห่งฮ่องกง
  • Shift_JIS - ญี่ปุ่น
  • EUC-JP - ญี่ปุ่น

MacRoman - ตัวเขาตัวละครที่ใช้โดยระบบ Mac OSหมายเหตุ:

double_encode

ตัวเลือก ค่าที่เป็นระบบการเข้ารหัส กำหนดว่าจะเข้ารหัส HTML entity ที่มีอยู่แล้วหรือไม่

  • TRUE - ปริยาย จะเปลี่ยนแปลงทุก entity
  • FALSE - จะไม่เข้ารหัส HTML entity ที่มีอยู่แล้ว

รายละเอียดเทคนิค

ค่าที่กลับค่ามา:

กลับค่าของศัพท์ที่ถูกแปลง

ถ้า string หากมีรหัสเข้ารหัสที่ไม่ถูกต้อง จะกลับค่าของเดิมเป็นศัพท์ว่าง ตามที่ได้ตั้งค่า ENT_IGNORE หรือ ENT_SUBSTITUTE หรือไม่

PHP รุ่น: 4+
บันทึกการปรับปรุง:

ใน PHP 5 ระหว่างcharacter-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>
I love "PHP"
</body>
</html>

การออกแบบของโค้ดดังกล่าวในเบราเซอร์ดังนี้:

I love "PHP".

การทดสอบการปฏิบัติ