Việc sử dụng các thực thể html trong php là gì?

chuỗi htmlspecialchars ( chuỗi $string [, int $flags = ENT_COMPAT. ENT_HTML401 [, chuỗi $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

Nếu chuỗi đầu vào được chuyển đến hàm này và tài liệu cuối cùng có chung bộ ký tự, thì hàm này đủ để chuẩn bị đầu vào để đưa vào hầu hết các ngữ cảnh của tài liệu HTML. Tuy nhiên, nếu đầu vào có thể đại diện cho các ký tự không được mã hóa trong bộ ký tự cuối cùng của tài liệu và bạn muốn giữ lại các ký tự đó (dưới dạng thực thể số hoặc thực thể được đặt tên), cả hàm này và htmlentities() (chỉ mã hóa các chuỗi con có thực thể được đặt tên . Thay vào đó, bạn có thể phải sử dụng mb_encode_numericentity()

Các bản dịch đã thực hiện CharacterReplacement& (dấu và)&" (dấu nháy kép)", trừ khi ENT_NOQUOTES được đặt' (dấu nháy đơn)' (dành cho ENT_HTML401) hoặc ' (dành cho ENT_XML1, ENT_XHTML hoặc ENT_HTML5), nhưng chỉ khi đặt ENT_QUOTES< (nhỏ hơn)<

Thông số

$flags0

Chuỗi đang được chuyển đổi

$flags1

Mặt nạ bit của một hoặc nhiều cờ sau, chỉ định cách xử lý dấu ngoặc kép, chuỗi đơn vị mã không hợp lệ và loại tài liệu được sử dụng. Mặc định là ENT_COMPAT. ENT_HTML401

Có sẵn $flags1 hằng Tên hằng Mô tả$flags3Sẽ chuyển đổi dấu ngoặc kép và để nguyên dấu ngoặc đơn. ENT_QUOTESSẽ chuyển đổi cả dấu nháy kép và dấu nháy đơn. ENT_NOQUOTESSẽ không chuyển đổi cả dấu ngoặc kép và dấu ngoặc đơn. $flags6Thầm lặng loại bỏ các chuỗi đơn vị mã không hợp lệ thay vì trả về một chuỗi trống. Không khuyến khích sử dụng cờ này vì nó » có thể có ý nghĩa bảo mật. $flags7Thay thế các chuỗi đơn vị mã không hợp lệ bằng Ký tự thay thế Unicode U+FFFD (UTF-8) hoặc � (nếu không) thay vì trả về một chuỗi trống. $flags8Thay thế các điểm mã không hợp lệ cho loại tài liệu nhất định bằng Ký tự thay thế Unicode U+FFFD (UTF-8) hoặc � (nếu không) thay vì để nguyên như vậy. Điều này có thể hữu ích, ví dụ, để đảm bảo định dạng tốt của các tài liệu XML với nội dung bên ngoài được nhúng. ENT_HTML401Xử lý mã dưới dạng HTML 4. 01. ENT_XML1Xử lý mã dưới dạng XML 1. ENT_XHTMLXử lý mã dưới dạng XHTML. ENT_HTML5Xử lý mã dưới dạng HTML 5. $encoding3

Đối số tùy chọn xác định mã hóa được sử dụng khi chuyển đổi ký tự

Nếu bỏ qua, giá trị mặc định của $encoding3 thay đổi tùy thuộc vào phiên bản PHP được sử dụng. Trong PHP5. 6 trở lên, tùy chọn cấu hình default_charset được sử dụng làm giá trị mặc định. PHP5. 4 và 5. 5 sẽ sử dụng UTF-8 làm mặc định. Các phiên bản trước của PHP sử dụng ISO-8859-1

Mặc dù đối số này là tùy chọn về mặt kỹ thuật, nhưng bạn nên chỉ định giá trị chính xác cho mã của mình nếu bạn đang sử dụng PHP 5. 5 trở xuống hoặc nếu tùy chọn cấu hình default_charset của bạn có thể được đặt không chính xác cho đầu vào đã cho

Đối với mục đích của chức năng này, các mã hóa ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252 và KOI8-R có hiệu quả tương đương, miễn là bản thân $flags0 hợp lệ để mã hóa, như

Các bộ ký tự sau được hỗ trợ

Bộ ký tự được hỗ trợCharsetBí danhMô tảISO-8859-1ISO8859-1Tây Âu, Latinh-1. ISO-8859-5ISO8859-5Bộ ký tự cyrillic ít được sử dụng (Latin/Cyrillic). ISO-8859-15ISO8859-15Tây Âu, Latinh-9. Thêm ký hiệu Euro, chữ cái tiếng Pháp và tiếng Phần Lan bị thiếu trong tiếng Latin-1 (ISO-8859-1). Unicode 8-bit nhiều byte tương thích UTF-8ASCII. cp866ibm866, bộ ký tự Cyrillic dành riêng cho 866DOS. cp1251Windows-1251, win-1251, 1251Bộ ký tự Cyrillic dành riêng cho Windows. cp1252Windows-1252, 1252Bộ ký tự dành riêng cho Windows cho Tây Âu. KOI8-Rkoi8-ru, koi8rTiếng Nga. BIG5950Tiếng Trung phồn thể, chủ yếu được sử dụng ở Đài Loan. GB2312936Tiếng Trung giản thể, bộ ký tự chuẩn quốc gia. BIG5-HKSCSBig5 với phần mở rộng Hồng Kông, tiếng Trung phồn thể. Shift_JISSJIS, SJIS-win, cp932, 932JapaneseEUC-JPEUCJP, eucJP-winJapaneseMacRomanCharset đã được Mac OS sử dụng. ''Một chuỗi trống kích hoạt phát hiện từ mã hóa tập lệnh (Zend multibyte), default_charset và ngôn ngữ hiện tại (xem nl_langinfo() và setlocale()), theo thứ tự này. Không được khuyến khích

Ghi chú. Bất kỳ bộ ký tự nào khác không được nhận dạng. Thay vào đó, mã hóa mặc định sẽ được sử dụng và cảnh báo sẽ được phát ra

$encoding6

Khi tắt $encoding6, PHP sẽ không mã hóa các thực thể html hiện có, mặc định là chuyển đổi mọi thứ

Giá trị trả về

Chuỗi đã chuyển đổi

Nếu đầu vào $flags0 chứa chuỗi đơn vị mã không hợp lệ trong $encoding3 đã cho, một chuỗi trống sẽ được trả về, trừ khi cờ $flags6 hoặc $flags7 được đặt

Nhật ký thay đổi

Phiên bảnMô tả5. 6. 0Giá trị mặc định cho tham số $encoding3 đã được thay đổi thành giá trị của tùy chọn cấu hình default_charset. 5. 4. 0Giá trị mặc định cho tham số $encoding3 đã được thay đổi thành UTF-8. 5. 4. 0Các hằng số $flags7, $flags8, ENT_HTML401, ENT_XML1, ENT_XHTMLENT_HTML5 đã được thêm vào. 5. 3. 0Hằng số $flags6 đã được thêm vào. 5. 2. 3 Tham số $encoding6 đã được thêm vào

ví dụ

Ví dụ #1 htmlspecialchars() ví dụ

ENT_NOQUOTES2

ghi chú

Ghi chú

Lưu ý rằng chức năng này không dịch bất cứ điều gì ngoài những gì được liệt kê ở trên. Để dịch thực thể đầy đủ, hãy xem htmlentities()

Việc sử dụng các thực thể HTML là gì?

Thực thể HTML là một đoạn văn bản ("chuỗi") bắt đầu bằng dấu và ( & ) và kết thúc bằng dấu chấm phẩy ( ; ). Các thực thể thường được sử dụng để hiển thị các ký tự dành riêng (nếu không sẽ được hiểu là mã HTML) và các ký tự ẩn (như khoảng trắng không ngắt) .

Khi nào tôi nên sử dụng Htmlspecialchars?

Bạn sử dụng htmlspecialchars MỖI lần bạn xuất nội dung trong HTML , vì vậy nội dung đó được hiểu là nội dung chứ không phải HTML. Nếu bạn cho phép nội dung được coi là HTML, thì bạn vừa mở ra cánh cửa cho các lỗi ở mức tối thiểu và tệ nhất là tổng số vụ hack XSS.

Các thực thể HTML có cần thiết không?

Nói chung, bạn không cần sử dụng các thực thể HTML nếu trình soạn thảo của bạn hỗ trợ Unicode . Đối với một số trường hợp, các thực thể có thể hữu ích. Trình chỉnh sửa của bạn không hỗ trợ Unicode. Bàn phím của bạn không hỗ trợ ký tự bạn muốn nhập, chẳng hạn như dấu gạch ngang hoặc ký hiệu bản quyền.

Sự khác biệt giữa các thực thể Addslashes() và HTML() về mặt chức năng là gì?

Chúng là những công cụ khác nhau cho các mục đích khác nhau. mysqli_real_escape_string làm cho dữ liệu an toàn để chèn vào MySQL (nhưng các truy vấn được tham số hóa sẽ tốt hơn). addlashes giả sử mọi thứ đều là 8 bit. mysql_real_escape_string tính đến mã hóa ký tự khi thực hiện mã hóa