Làm cách nào để chuyển đổi các ký tự đặc biệt thành UTF 8 trong PHP?

chuỗi htmlspecialchars ( chuỗi $string [, int $flags = ENT_COMPAT. ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )

Gọi htmlspecialchars() là đủ nếu mã hóa hỗ trợ tất cả các ký tự trong chuỗi đầu vào (chẳng hạn như UTF-8 nhưng cả ISO-8859-1 trên đầu vào chỉ ISO-8859-1). htmlentities() chỉ cần được gọi nếu mã hóa đầu ra không hỗ trợ tất cả các ký tự trong chuỗi đầu vào

Chức năng này hữu ích trong việc ngăn văn bản do người dùng cung cấp chứa đánh dấu HTML, chẳng hạn như trong bảng tin hoặc ứng dụng sổ khách

Các bản dịch được thực hiện là

  • '&' (dấu và) trở thành '&'
  • '"' (trích dẫn kép) trở thành '"' khi không đặt ENT_NOQUOTES
  • "'" (trích dẫn đơn) chỉ trở thành ''' khi ENT_QUOTES được đặt
  • '<' (nhỏ hơn) trở thành '<'
  • '>' (lớn hơn) trở thành '>'

Thông số

string

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

flags

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 flags hằng số Tên hằng Mô tả_______9Sẽ 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. $flags2Thầ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. Sử dụng cờ này không được khuyến khích vì nó. $flags3Thay thế chuỗi đơn vị mã không hợp lệ bằng Ký tự thay thế Unicode U+FFFD (UTF-8) hoặc &#FFFD; . $flags4Thay 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 &#FFFD; . Đ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. $flags5Xử lý mã dưới dạng HTML 4. 01. $flags6Xử lý mã dưới dạng XML 1. $flags7Xử lý mã dưới dạng XHTML. $flags8Xử lý mã dưới dạng HTML 5. $flags9

Xác định mã hóa được sử dụng trong chuyển đổi. Nếu bỏ qua, giá trị mặc định cho đối số này là ISO-8859-1 trong các phiên bản PHP trước 5. 4. 0 và UTF-8 từ PHP 5. 4. 0 trở đi

Đối với mục đích của chức năng này, 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 string hợp lệ để mã hóa, như

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

Bộ ký tự được hỗ trợBộ ký tựBí 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. BIG 5950 Tiế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) 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

$encoding1

Khi tắt $encoding1, 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 string chứa chuỗi đơn vị mã không hợp lệ trong $flags9 đã cho, một chuỗi trống sẽ được trả về, trừ khi cờ $flags2 hoặc $flags3 được đặt

Nhật ký thay đổi

Phiên bảnMô tả5. 4. 0Giá trị mặc định cho tham số $flags9 đã được thay đổi thành UTF-8. 5. 4. 0Các hằng số $flags3, $flags4, $flags5, $flags6, $flags7 và $flags8 đã được thêm vào. 5. 3. 0Hằng số $flags2 đã được thêm vào. 5. 2. 3 Tham số $encoding1 đã được thêm vào. 4. 1. 0Tham số $flags9 đã được thêm vào

ví dụ

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

$double_encode7

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()

Cách chuyển đổi sang UTF

Hàm utf8_encode() là một hàm sẵn có trong PHP được sử dụng để mã hóa chuỗi ISO-8859-1 thành UTF-8. Unicode đã được phát triển để mô tả tất cả các ký tự có thể có của mọi ngôn ngữ và bao gồm rất nhiều ký hiệu với một số duy nhất cho mỗi ký hiệu/ký tự.

Cách chuyển đổi ASCII sang UTF

Nếu chúng tôi biết rằng mã hóa hiện tại là ASCII, hàm 'iconv' có thể được sử dụng để chuyển đổi ASCII thành UTF-8 . Chuỗi ban đầu có thể được chuyển thành tham số cho hàm iconv để mã hóa nó thành UTF-8.

Cách kiểm tra UTF

Bạn có thể sử dụng kiểm tra tính hợp lệ UTF-8 có sẵn trong preg_match [Hướng dẫn sử dụng PHP] kể từ PHP 4. 3. 5. Nó sẽ trả về 0 (không có thông tin bổ sung) nếu một chuỗi không hợp lệ được đưa ra. $isUTF8 = preg_match('//u', $string);

UTF là gì

Định nghĩa và cách sử dụng. Hàm utf8_encode() mã hóa chuỗi ISO-8859-1 thành UTF-8 . Unicode là một tiêu chuẩn phổ quát và đã được phát triển để mô tả tất cả các ký tự có thể có của tất cả các ngôn ngữ cộng với rất nhiều ký hiệu với một số duy nhất cho mỗi ký tự/ký hiệu.