ฟังก์ชัน PHP htmlentities()

ตัวอย่าง

แปลงอักษรเป็น HTML entity:

<?php
$str = "<? W3S?h????>";
echo htmlentities($str);
?>

การออกอากาศของโค้ดดังกล่าวใน HTML ดังนี้ (ดูรหัสที่แท้จริง):

<!DOCTYPE html>
<html>
<body>
<© W3Sçh°°¦§>
</body>
</html>

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

<? W3S?h????>

การระบุและวิธีใช้

ฟังก์ชัน htmlentities() แปลรหัสอักษรเป็นรหัสเอนทิตี้ HTML

คำเตือน:เพื่อให้รหัสเอนทิตี้ HTML กลับเป็นตัวอักษร ใช้ html_entity_decode() ฟังก์ชัน

คำเตือน:ใช้ get_html_translation_table() ฟังก์ชันเพื่อกลับคืนตารางแปลภาษาที่ใช้ใน htmlentities()

คำสั่ง

htmlentities(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;

ปริมาณเพิ่มเติมที่กำหนดชนิดเอกสารที่ใช้

  • ENT_HTML401 - ปริมาณเริ่มต้น. ประมวลผลรหัสอักษรตาม HTML 4.01
  • ENT_HTML5 - ประมวลผลรหัสอักษรตาม HTML 5
  • ENT_XML1 - ประมวลผลรหัสอักษรตาม XML 1
  • ENT_XHTML - ประมวลผลรหัสอักษรตาม XHTML
character-set

เลือกได้. ข้อความที่กำหนดตัวแปลตัวอักษรที่ต้องการใช้

ค่าที่ยอมรับได้:

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

หมายเหตุ:ในเวอร์ชัน PHP ก่อน 5.4 ตัวแปรที่ไม่สามารถตรวจสอบรูปแบบชุดอักษรได้จะถูกละเลยและถูกแทนที่ด้วย ISO-8859-1 ตั้งแต่ PHP 5.4 ตัวแปรที่ไม่สามารถตรวจสอบรูปแบบชุดอักษรจะถูกละเลยและถูกแทนที่ด้วย UTF-8

double_encode

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

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

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

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

กลับค่าของตัววางเปลี่ยน

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

PHP version: 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 htmlentities($str, ENT_COMPAT); // ปรับสีนิ้ววาฬเดี่ยว
echo "<br>";
echo htmlentities($str, ENT_QUOTES); // ปรับสีนิ้ววาฬและสีนิ้ววาฬเดี่ยว
echo "<br>";
echo htmlentities($str, ENT_NOQUOTES); // ไม่แปลงคำนำออก
?>

การออกอากาศของโค้ดดังกล่าวใน HTML ดังนี้ (ดูรหัสที่แท้จริง):

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

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

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

การทดสอบรัน

ตัวอย่าง 2

โดยใช้ตัวย่อตัวแปลตัวอักษร Western European แปลงตัวอักษรบางตัวเป็น HTML entity:

<?php
$str = "My name is Øyvind Øsane. I'm Norwegian.";
echo htmlentities($str, ENT_QUOTES, "ISO-8859-1"); 
// จะเปลี่ยนคำนำออกเป็น HTML entity แค่ในคำนำออกสองคำ (ไม่ใช่คำนำออกหนึ่งคำ), และใช้ตัวย่อตัวแปลตัวอักษร Western European
?>

การออกอากาศของโค้ดดังกล่าวใน HTML ดังนี้ (ดูรหัสที่แท้จริง):

<!DOCTYPE html>
<html>
<body>
My name is Øyvind Øsane. I'm Norwegian.
</body>
</html>

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

My name is Øyvind Øsane. I'm Norwegian.

การทดสอบรัน