(PHP 4 >= 4.3.0, PHP 5)
html_entity_decode – Chuyển ký tự từ thực thể HTML sang ứng dụng
Miêu tả hàm html_entity_decode
1 |
string html_entity_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") ]] ) |
Chính xác hơn, hàm này giải mã tất cả các thực thể (bao gồm tất cả thực thể số) đó là:
a) nhất thiết phải hợp lệ dành cho một số kiểu tài liệu – ví dụ, cho XML, hàm này không giải mãi các thực thể đã được định định nghĩa trong một số DTD (Document Type Definition – kiểu tài liệu dùng để định nghĩa các kiểu dữ liệu cho các phân tử trong tài liệu XML).
b) Một hoặc nhiều ký tự trong bộ ký tự mã hóa kết hợp với chọn bảng mã và được cho phép kiểu tài liệu được chọn. Tất cả các thực thể khác sẽ bị bỏ qua.
Tham số
string
Chuỗi ký đầu vào.
flags
Sử dụng một hoặc nhiều hằng số được quy định ở bảng dưới đây cho tham số $flags. Mặc địch là ENT_COMPAT | ENT_HTML401.
Hằng số có sẵn trong tham số flags
Tên hằng số | Miêu tả |
---|---|
ENT_COMPAT | Chuyển đổi dấu nháy kép ("), không chuyển dấu nháy đơn ('). |
ENT_QUOTES | Chuyển đổi cả dấu nháy kép (") và dấu nháy đơn ('). |
ENT_NOQUOTES | Không chuyển cả dấu nháy kép (") lẫn dấu nháy đơn ('). |
ENT_HTML401 | Dành cho HTML 4.01. |
ENT_XML1 | Dành cho XML 1. |
ENT_XHTML | Dành cho XHTML. |
ENT_HTML5 | Dành cho HTML 5. |
encoding
Một tham số tùy chọn để định nghĩa bảng mã sẽ được sử dụng khi chuyển đổi chuỗi ký tự.
Nếu không điền, giá trị mặc định của bảng mã sẽ phụ thuộc vào phiên bản PHP đang được sử dụng. Trong PHP 5.6 trở về sau, tùy chọn cấu hình default_charset sẽ được sử dụng là giá trị mặc định. PHP 5.4 và 5.5 sẽ sử dụng mặc định là UTF-8. Những phiên bản PHP trước sẽ sử dụng ISO-8859-1.
Mặc dù tham số này là tùy chọn kỹ thuật nhưng bạn nên điền đúng mã mà bạn cần sử dụng nếu bạn dùng PHP 5.5 trở về trước, hoặc nếu tùy chọn cấu hình default_charset không được cấu hình đúng bảng mã bạn cần.
Những mã sau được hỗ trợ:
Những mã được hỗ trợ
Mã | Tên gọi khác | Miêu tả |
---|---|---|
ISO-8859-1 | ISO8859-1 | Tây Âu, Latin-1 |
ISO-8859-5 | ISO8859-5 | Latin/Cyrillic |
ISO-8859-15 | ISO8859-15 | Tây Âu, Latin-9. Thêm ký hiệu Euro, chữ Pháp và Phần Lan bị thiếu trong Latin-1 (ISO-8859-1). |
UTF-8 | ASCII tương thích với multi-byte trong Unicode 8-bit. | |
cp866 | ibm866, 866 | Mã Cyrillic đặc trưng của DOS. |
cp1251 | Windows-1251, win-1251, 1251 | Mã Cyrillic đặc trưng của Windows |
cp1252 | Windows-1252, 1252 | Mã đặc trưng của Windows cho Tây Âu. |
KOI8-R | koi8-ru, koi8r | Nga |
BIG5 | 950 | Chữ Trung Quốc phồn thể, chủ yếu được sử dụng ở Đài Loan. |
GB2312 | 936 | Chữ Trung Quốc giản thể, mã chuẩn quốc gia. |
BIG5-HKSCS | Big5 với phần mở rộng dành cho Hong Kong, chữ Trung Quốc phồn thể. | |
Shift_JIS | SJIS, SJIS-win, cp932, 932 | Chữ Nhật Bản. |
EUC-JP | EUCJP, eucJP-win | Chữ Nhật Bản. |
MacRoman | Mã được sử dụng bởi hệ điều hành Mac. | |
'' | Một chuỗi rỗng kích hoạt tìm từ bảng mã script (Zend multibyte), default_charset và địa phương hiện tại (xem thêm nl_langinfo() và setlocale()). Không khuyến khích sử dụng. |
Giá trị trả về
Trả về chuỗi đã được giải mã.
Ví dụ
Ví dụ 1 về hàm html_entity_decode()
1 2 3 4 5 6 7 8 9 10 11 |
<?php $orig = "I'll \"walk\" the <b>dog</b> now"; $a = htmlentities($orig); $b = html_entity_decode($a); echo $a; // I'll "walk" the <b>dog</b> now echo $b; // I'll "walk" the <b>dog</b> now ?> |
Lưu ý
Bạn có thể tự hỏi tại sao khi sử dụng trim(html_entity_decode(‘ ’)); đầu ra không phải là một chuỗi trống? Đó là vì ‘ ’ không phải là mã ASCII 32 (hàm trim() chỉ thực thi với mã này) mà là mã ASCII 160 (0xa0) trong mã ISO 8859-1 mặc định .