Hàm html_entity_decode() của PHP

Mô hình

Chuyển đổi các HTML entity định nghĩa trước như "<" (nhỏ hơn) và ">" (đại hơn) thành ký tự:

<?php
$str = "This is some <b>bold</b> text.";
echo htmlspecialchars_decode($str);
?>

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

<!DOCTYPE html>
<html>
<body>
This is some <b>bold</b> text.
</body>
</html>

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

This is some bold text.

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

htmlspecialchars_decode() hàm chuyển đổi các HTML entity được định nghĩa trước thành ký tự.

Các HTML entity sẽ được giải mã là:

  • & Giải mã thành & (và)
  • " Giải mã thành " (dấu ngoặc kép)
  • ' Giải mã thành ' (dấu ngoặc đơn)
  • < Giải mã thành < (nhỏ hơn)
  • > Giải mã thành > (đại hơn)

htmlspecialchars_decode() là hàm ngược lại của htmlspecialchars().

Cú pháp

htmlspecialchars_decode(string,flags)
Tham số Mô tả
string Bắt buộc. Định nghĩa chuỗi cần giải mã.
flags

Tùy chọn. Định nghĩa cách xử lý dấu ngoặc và loại tài liệu sử dụng.

Các loại dấu ngoặc có thể sử dụng:

  • 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.

Định nghĩa các flag phụ thuộc vào loại tài liệu 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.

Chi tiết kỹ thuật

Trả về giá trị: Trả về chuỗi đã chuyển đổi.
Phiên bản PHP: 5.1.0+
Nhật ký cập nhật:

Trong PHP 5.4, đã thêm các flag bổ sung để quy định loại tài liệu sử dụng:

  • ENT_HTML401
  • ENT_HTML5
  • ENT_XML1
  • ENT_XHTML

Các ví dụ khác

Ví dụ 1

Chuyển đổi các thực thể HTML được định nghĩa trước thành ký tự:

<?php
$str = "Bill & 'Steve'";
echo htmlspecialchars_decode($str, ENT_COMPAT); // Chỉ chuyển đổi dấu ngoặc kép
echo "<br>";
echo htmlspecialchars_decode($str, ENT_QUOTES); // Chuyển đổi dấu ngoặc kép và dấu ngoặc đơn
echo "<br>";
echo htmlspecialchars_decode($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 & '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 các thực thể HTML được định nghĩa trước thành dấu ngoặc kép:

<?php
$str = 'I love "PHP".';
echo htmlspecialchars_decode($str, ENT_QUOTES); // Chuyển đổi dấu ngoặc kép và dấu ngoặc đơn
?>

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

<!DOCTYPE html>
<html>
<body>
Tôi yêu "PHP".
</body>
</html>

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

Tôi yêu "PHP".