Hàm html_entity_decode() trong PHP

Mô hình

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

<?php
$str = "<© W3Sçh°°¦§>";
echo html_entity_decode($str);
?>

Mã HTML đầu ra của đoạn 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

html_entity_decode() chuyển đổi các thể hiện HTML thành ký tự.

html_entity_decode() là hàm htmlentities() Hàm ngược lại của hàm.

Cú pháp

html_entity_decode(string,flags,character-set)
Tham số Mô tả
string Bắt buộc. Quy định chuỗi cần giải mã.
flags

Tùy chọn. Quy định cách xử lý dấu ngoặc và loại tài liệu nào được sử dụng.

Loại dấu ngoặc có sẵn:

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

Quy định các flag bổ sung cho loại tài liệu được 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

Tùy chọn. Giá trị chuỗi, quy định tập hợp ký tự cần sử dụng.

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

  • UTF-8 - Mặc định. ASCII tương thích với 8 byte Unicode nhiều byte
  • ISO-8859-1 - Tây Âu
  • ISO-8859-15 - Tây Âu (bao gồm các ký tự Pháp và Finnish bị mất trong ISO-8859-1)
  • cp866 - Tập hợp ký tự Cyrillic đặc dụng cho DOS
  • cp1251 - Tập hợp ký tự Cyrillic đặc dụng cho Windows
  • cp1252 - Tập hợp ký tự西欧 đặc dụng cho Windows
  • KOI8-R - Tiếng Nga
  • BIG5 - Trung văn phồn thể, chủ yếu được sử dụng ở Đà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 Hồng Kông
  • 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 5.4 trước, 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.

Chi tiết kỹ thuật

Trả về giá trị: Trả về chuỗi đã được chuyển đổi
Phiên bản PHP: 4.3.0+

Lịch sử cập nhật:

Phiên bản Mô tả
PHP 5 character-set Giá trị mặc định của tham số đã thay đổi thành UTF-8.
PHP 5.4

Đã thêm các flag bổ sung để quy định loại tài liệu mà bảng dịch mã áp dụng:

  • ENT_HTML401
  • ENT_HTML5
  • ENT_XML1
  • ENT_XHTML
PHP 5.3.4 Đã thêm hỗ trợ cho mã hóa đa byte.

Thử nghiệm thêm

Ví dụ 1

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

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

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

<!DOCTYPE html>
<html>
<body>
Bill & 'Steve'<br>
Bill & 'Steve'<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'

Ví dụ 2

Chuyển đổi HTML entity thành ký tự bằng cách sử dụng bảng mã西 Âu:

<?php
$str = "My name is Øyvind Åsane. I'm Norwegian.";
echo html_entity_decode($str, ENT_QUOTES, "ISO-8859-1");
?>

Kết quả đầu ra HTML của mã trên (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.