Chức năng PHP htmlentities()

Mô hình

Chuyển đổi ký tự thành các ký tự HTML:

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

Kết quả đầu ra HTML của mã trên như sau (xem mã nguồn):

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

Kết quả đầu ra của mã trên trình duyệt:

<? W3S?h????>

Định nghĩa và cách sử dụng

chức năng htmlentities() để chuyển đổi ký tự thành ký tự HTML thực thể.

Lưu ý:Để chuyển đổi các ký tự HTML thực thể trở lại ký tự, hãy sử dụng html_entity_decode() chức năng.

Lưu ý:Vui lòng sử dụng get_html_translation_table() Chức năng để trả về bảng dịch mã được sử dụng bởi function htmlentities().

Cú pháp

htmlentities(string,flags,character-set,double_encode)
Tham số Mô tả
string Bắt buộc. Quy định chuỗi cần chuyển đổi.
flags

Chọn. Quy định cách xử lý dấu ngoặc kép, mã không hợp lệ và loại tài liệu cần sử dụng.

Các loại dấu ngoặc kép có sẵn:

  • ENT_COMPAT - Mặc định. Chỉ mã hóa dấu ngoặc kép.
  • ENT_QUOTES - Mã hóa dấu ngoặc kép và dấu ngoặc đơn.
  • ENT_NOQUOTES - Không mã hóa bất kỳ dấu ngoặc kép nào.

Mã không hợp lệ:

  • ENT_IGNORE - Bỏ qua mã không hợp lệ thay vì trả về một chuỗi rỗng. Nên tránh sử dụng vì có thể ảnh hưởng đến tính an toàn.
  • ENT_SUBSTITUTE - Thay thế mã không hợp lệ bằng một ký tự được chỉ định có ký tự thay thế Unicode U+FFFD (UTF-8) hoặc &#FFFD; thay vì trả về một chuỗi rỗng.
  • ENT_DISALLOWED - Thay thế các điểm mã không hợp lệ trong loại tài liệu được chỉ định bằng ký tự thay thế Unicode U+FFFD (UTF-8) hoặc &#FFFD;.

Các flag thêm quy định loại tài liệu cần sử dụng:

  • ENT_HTML401 - Mặc định. Xử lý mã như HTML 4.01.
  • ENT_HTML5 - Xử lý mã như HTML 5.
  • ENT_XML1 - Xử lý mã như XML 1.
  • ENT_XHTML - Xử lý mã như XHTML.
character-set

Chọn. Một chuỗi quy định bộ ký tự cần sử dụng.

Giá trị được phép:

  • UTF-8 - Mặc định. 8 byte Unicode tương thích với ASCII
  • ISO-8859-1 - Tây Âu
  • ISO-8859-15 - Tây Âu (thêm biểu tượng euro + các ký tự tiếng Pháp và tiếng Phần Lan bị mất trong ISO-8859-1)
  • cp866 - Tập hợp ký tự Cyrillic专用 DOS
  • cp1251 - Tập hợp ký tự Cyrillic专用 Windows
  • cp1252 - Tập hợp ký tự西欧专用 Windows
  • KOI8-R - Tiếng Nga
  • BIG5 - Trung văn phồn thể, được sử dụng chính ở Đài Loan
  • GB2312 - Trung văn giản thể, tập hợp ký tự tiêu chuẩn quốc gia
  • BIG5-HKSCS - Big5 với mở rộng Hong Kong
  • Shift_JIS - Tiếng Nhật
  • EUC-JP - Tiếng Nhật
  • MacRoman - Tập hợp ký tự được sử dụng bởi hệ điều hành Mac

Ghi chú:Trong các phiên bản PHP trước 5.4, các tập hợp ký tự không thể nhận diện sẽ bị bỏ qua và được thay thế bằng ISO-8859-1. Từ PHP 5.4 trở đi, các tập hợp ký tự không thể nhận diện sẽ bị bỏ qua và được thay thế bằng UTF-8.

double_encode

Tùy chọn. Giá trị boolean, quy định có mã hóa các ký tự HTML đã tồn tại hay không.

  • TRUE - Mặc định. Chuyển đổi tất cả các ký tự.
  • FALSE - Không mã hóa các ký tự HTML đã tồn tại.

Chi tiết kỹ thuật

Trả về giá trị:

Trả về chuỗi đã được chuyển đổi.

Nếu string Nếu bao gồm mã hóa không hợp lệ, sẽ trả về một chuỗi rỗng, trừ khi đã thiết lập các dấu hiệu ENT_IGNORE hoặc ENT_SUBSTITUTE.

Phiên bản PHP: 4+
Nhật ký cập nhật:

Trong PHP 5,character-set Giá trị mặc định của tham số thay đổi thành UTF-8.

Trong PHP 5.4, đã thêm: ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 và ENT_XHTML.

Trong PHP 5.3, đã thêm ENT_IGNORE.

Trong PHP 5.2.3, đã thêm: double_encode Tham số.

Trong PHP 4.1, đã thêm: character-set Tham số.

Các ví dụ khác

Ví dụ 1

Chuyển đổi ký tự thành các ký tự HTML:

<?php
$str = "Bill & 'Steve'";
echo htmlentities($str, ENT_COMPAT); // Chỉ chuyển đổi dấu ngoặc kép
echo "<br>";
echo htmlentities($str, ENT_QUOTES); // Chuyển đổi dấu ngoặc kép và dấu ngoặc đơn
echo "<br>";
echo htmlentities($str, ENT_NOQUOTES); // Không chuyển đổi bất kỳ dấu ngoặc nào
?>

Kết quả đầu ra HTML của mã trên như sau (xem mã nguồn):

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

Kết quả đầu ra của mã trên trình duyệt:

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

Chạy ví dụ

Ví dụ 2

Dùng bộ mã hóa Western European để chuyển đổi một số ký tự thành ký tự HTML:

<?php
$str = "Tên của tôi là ?yvind ?sane. Tôi là người Na Uy.";
echo htmlentities($str, ENT_QUOTES, "ISO-8859-1"); 
// Chỉ chuyển đổi dấu ngoặc kép (không phải dấu ngoặc đơn), và sử dụng bộ mã hóa Western European
?>

Kết quả đầu ra HTML của mã trên như sau (xem mã nguồn):

<!DOCTYPE html>
<html>
<body>
Tên của tôi là Øyvind Åsane. Tôi là người Na Uy.
</body>
</html>

Kết quả đầu ra của mã trên trình duyệt:

Tên của tôi là ?yvind ?sane. Tôi là người Na Uy.

Chạy ví dụ