Hàm PHP htmlspecialchars()
Mô hình
Chuyển đổi các ký tự định nghĩa sẵn "<" (nhỏ hơn) và ">" (đại hơn) thành ký tự HTML:
<?php $str = "This is some <b>bold</b> text."; echo htmlspecialchars($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 như sau:
This is some <b>bold</b> text.
Định nghĩa và cách sử dụng
Hàm htmlspecialchars() chuyển đổi các ký tự định nghĩa sẵn thành ký tự HTML.
Các ký tự định nghĩa sẵn là:
- & (và) trở thành &
- " (dấu ngoặc kép) trở thành "
- ' (dấu ngoặc đơn) trở thành '
- < (nhỏ hơn) trở thành <
- > (đại hơn) trở thành >
Lưu ý:Nếu cần chuyển đổi các ký tự HTML đặc biệt trở lại ký tự, hãy sử dụng htmlspecialchars_decode() Hàm.
Cú pháp
htmlspecialchars(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 |
Tùy chọn. Quy định cách xử lý dấu ngoặc, mã không hợp lệ và loại tài liệu nào được sử dụng. Loại dấu ngoặc hợp lệ:
Mã không hợp lệ:
Flags thêm để quy định loại tài liệu sử dụng:
|
character-set |
Tùy chọn. Chuỗi quy định tập hợp ký tự cần sử dụng. Giá trị được phép:
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 HTML entity hiện có hay không.
|
Chi tiết kỹ thuật
Giá trị trả về: |
Trả về chuỗi đã được chuyển đổi. Nếu string Nếu包含 không hợp lệ mã hóa, sẽ trả về một chuỗi rỗng, trừ khi đã thiết lập dấu hiệu ENT_IGNORE hoặc ENT_SUBSTITUTE. |
Phiên bản PHP: | 4+ |
Ghi chú 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 mới: ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_HTML5, ENT_XML1 và ENT_XHTML. Trong PHP 5.3, đã thêm mới ENT_IGNORE. Trong PHP 5.2.3, đã thêm mới double_encode Tham số. Trong PHP 4.1, đã thêm character-set Tham số. |
Thực hành thêm
Ví dụ 1
Chuyển đổi một số ký tự được định nghĩa trước thành mã thực thể HTML:
<?php $str = "Bill & 'Steve'"; echo htmlspecialchars($str, ENT_COMPAT); // Chỉ chuyển đổi dấu kép echo "<br>"; echo htmlspecialchars($str, ENT_QUOTES);// Chuyển đổi dấu kép và dấu ngoặc kép echo "<br>"; echo htmlspecialchars($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 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 như sau:
Bill & 'Steve' Bill & 'Steve' Bill & 'Steve'
Ví dụ 2
Chuyển đổi dấu kép thành mã thực thể HTML:
<?php $str = 'Tôi yêu "PHP".'; echo htmlspecialchars($str, ENT_QUOTES); // Chuyển đổi dấu kép và dấu ngoặc kép ?>
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 như sau:
Tôi yêu "PHP".