Htmlentities trong PHP



cú pháp

string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 
   [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

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

Nó được sử dụng để chuyển đổi tất cả các ký tự áp dụng thành các thực thể Html

Giá trị trả về

Nó trả về chuỗi được mã hóa

Thông số

Sr. Không có thông số và mô tả

sợi dây

Nó chứa thông tin về chuỗi đầu vào

2

cờ

Nó chứa thông tin về cờ

3

mã hóa

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

Thí dụ

Hãy thử ví dụ sau

Điều này sẽ tạo ra kết quả sau − −

PHP Function htmlentitiesPHP Function htmlentities

php_function_reference. htm

Nói chung, mã hóa ký tự được thực hiện theo nhiều cách khác nhau trong PHP, cung cấp nhiều chức năng để thực hiện các chuyển đổi này, trên một chuỗi đầu vào nhất định, từ dạng này sang dạng khác. Ví dụ: PHP urlencode()/decode() được sử dụng để chuyển đổi các ký tự đặc biệt xuất hiện trong một URL thành định dạng %(Hex)

Một hàm nl2br() khác mà chúng ta đã thấy khi thảo luận về ngắt dòng PHP, cũng thực hiện chuyển đổi giữa ngắt dòng thực tế sang ngắt dòng HTML

Tương tự, hàm PHP htmlentities() được sử dụng để chuyển đổi ký tự đặc biệt xuất hiện trong chuỗi đầu vào thành dạng thực thể ký tự HTML. Loại chuyển đổi này được sử dụng để ngăn chuỗi đầu vào đã cho chứa các ký tự đặc biệt có thể khiến dữ liệu bị cắt bớt trong khi gửi chúng dưới dạng đầu vào của truy vấn cơ sở dữ liệu, URL, v.v.

Ví dụ: nếu chúng ta có các dấu ngoặc đơn với một chuỗi đầu vào bắt buộc phải được nhúng với truy vấn, sẽ gây ra lỗi PHP do câu lệnh truy vấn không hoàn thành, điều đó bị cắt bớt bởi các dấu nháy đơn

Trong tình huống như vậy, htmlentities() được sử dụng để ngăn việc phân tích cú pháp các ký tự đặc biệt xảy ra với dữ liệu đầu vào của người dùng

Thực thể ký tự HTML

Trước khi bắt đầu với mô tả chi tiết về hàm PHP htmlentities(), chúng ta hãy xem về các thực thể ký tự HTML. Các thực thể này bắt đầu bằng ký tự dấu và (&), theo sau là tên hoặc số mà các thực thể này được chỉ định

Khi sử dụng số thực thể, thì thực thể HTML sẽ bắt đầu bằng (&), theo sau là (#) và số thực thể

Đối với mỗi ký tự, sẽ có một thực thể ký tự tương ứng, chứa một tên và số duy nhất. Chúng ta có thể chỉ định một thực thể HTML bằng cách sử dụng tên của nó như &name, ví dụ: ký tự < có thể được chỉ định là <

Mặt khác, với đặc tả số thực thể, cùng một ký tự < có thể được chỉ định là <

htmlentities() Cú pháp, Tham số và Hằng số Gắn cờ

Bây giờ, chúng ta hãy xem qua cú pháp cơ bản của hàm PHP htmlentities() và một số hàm PHP có liên quan

cú pháp

Hàm này chấp nhận bốn đối số như được hiển thị trong cú pháp sau

string htmlentities ( string $input_string, int $flag, string $character_encoding, bool $double_encode )

Bây giờ danh sách sau đây mô tả các đối số của htmlentities()

  • input_string – đại diện cho đầu vào chuỗi ký tự mà các ký tự đặc biệt sẽ được chuyển đổi thành các thực thể HTML
  • cờ – Cờ này có thể có một tập hợp các hằng số cờ có sẵn và giá trị mặc định cho đối số này là ENT_COMPAT. ENT_HTML401
  • character_encoding – Bất kỳ một trong các giá trị có sẵn để chỉ định kỹ thuật mã hóa ký tự sẽ được biểu thị cho đối số này, như chúng tôi đã chỉ định với hàm trích xuất chuỗi nhiều byte PHP mb_substr()
  • double_encode – Tham số này sẽ chấp nhận TRUE để cho phép mã hóa thực thể HTML diễn ra với chuỗi đầu vào đã cho; . Nhưng mặc định là TRUE

Hằng số gắn cờ

Tập hợp các hằng số PHP được kết hợp với nhau thành giá trị của tham số cờ của hàm htmlentities() được liệt kê bên dưới

  • ENT_COMPAT – Điều này được sử dụng để chuyển đổi ký tự trích dẫn kép xuất hiện trong chuỗi đầu vào, thành thực thể HTML tương ứng, nhưng để nguyên dấu nháy đơn. Và hằng số này kết hợp với hằng số ENT_HTML401 để trở thành giá trị mặc định cho tham số cờ
  • ENT_QUOTES – Không giống như ENT_COMPAT, nó bao gồm cả dấu ngoặc đơn và dấu ngoặc kép của chuỗi đầu vào
  • ENT_NOQUOTES – Nó không chuyển đổi dấu ngoặc đơn hay dấu ngoặc kép
  • ENT_IGNORE – Đúng như tên gọi, nó bỏ qua các ký tự không hợp lệ trong chuỗi ký tự đầu vào
  • ENT_SUBSTITUTE – Nó được sử dụng để thay thế các ký tự Unicode thay thế cho các ký tự không hợp lệ đã xảy ra

Ngoài danh sách các hằng số cờ ở trên, còn có một danh sách các hằng số còn lại hoạt động tùy thuộc vào các loại và phiên bản khác nhau của ngôn ngữ đánh dấu. Đó là,

  • ENT_HTML401
  • ENT_XML1
  • ENT_XHTML
  • ENT_HTML5

Thí dụ. Chuyển đổi ký tự đặc biệt thành các thực thể HTML bằng PHP

htmlentities()";
$output = htmlentities($input_string);
echo "Original Character String
"; echo $input_string . "

"; echo "After Conversion
"; echo $output; ?>

Trong chương trình trên, chúng tôi có một chuỗi đầu vào bao gồm các dấu nháy đơn và các ký hiệu nhỏ hơn và lớn hơn mà trình duyệt có thể phân tích cú pháp

Vì vậy, trước khi áp dụng các đầu vào này vào hàm htmlentities(), nếu chúng ta in nó ra trình duyệt, thì trình duyệt sẽ phân tích cú pháp các thẻ HTML, và do đó hiển thị chuỗi htmlentities() với phông chữ in nghiêng

Thay vào đó, nếu chúng ta xem xét kết quả sau khi áp dụng dữ liệu đầu vào cho htmlentities(), thì chúng ta có thể thấy các thẻ trên màn hình trình duyệt. Tuy nhiên, các ký tự trích dẫn đơn vẫn được giữ nguyên như trong màn hình trình duyệt do hằng số cờ có giá trị ENT_COMPAT theo mặc định, điều này sẽ không cho phép chuyển đổi các trích dẫn đơn thành thực thể ký tự HTML

Các chức năng liên quan cho PHP htmlentities()

Đầu vào chuỗi được mã hóa có thể được hoàn nguyên về dạng ban đầu bằng cách sử dụng hàm PHP có tên html_entity_decode(). Vì vậy, khi chúng ta gửi giá trị của một biến PHP $output trong chương trình trên tới hàm  html_entity_decode(), thì chúng ta có thể nhận được dạng ban đầu của chuỗi đầu vào

Ví dụ: chúng ta nên thêm các dòng sau để kiểm tra đầu ra được trả về bởi hàm html_entity_decode()

After Decode html entity
"; echo $decoded_output; ?>

Giống như htmlentities(), PHP cung cấp một hàm khác, có tên là htmlspecialchars(), hàm này cũng được sử dụng với mục đích tương tự là thay đổi ký tự đặc biệt thành dạng thực thể HTML

But the difference between htmlspecialchars() and htmlentities() is, htmlspecialchars() can convert a limited set of special characters, that is, less than (<), greater than (>), single quotes (’), double quotes (”) and ampersand (&), into their corresponding HTML entities, whereas, htmlentities() functions will convert all special character into its entity form.

Ví dụ: chúng ta hãy kiểm tra hai phương thức này bằng chương trình PHP sau để chuyển đổi chuỗi đầu vào bao gồm ký hiệu bản quyền (©)

"; echo $output = htmlspecialchars($input_string) . "

"; echo "htmlentities() returns

"; echo $output = htmlentities($input_string); ?>

Trong khi thực hiện chương trình trên, chúng ta có thể thấy với chế độ xem nguồn của đầu ra trình duyệt, cách hàm htmlentities() chuyển đổi ký hiệu © thành © và htmlspecialchars() thay thế ký tự này thành ©

Thực thể HTML PHP là gì?

htmlentities(). Hàm htmlentities() là một hàm có sẵn trong PHP được sử dụng để chuyển đổi tất cả các ký tự có thể áp dụng cho các thực thể HTML . Hàm này chuyển đổi tất cả các ký tự có thể áp dụng cho các thực thể HTML.

Sự khác biệt giữa các thực thể HTML () và htmlspecialchars () là gì?

Không giống như htmlspecialchars, htmlentities không chỉ chuyển đổi các ký tự đặc biệt trong chuỗi thành các thực thể HTML mà còn chuyển đổi tất cả các ký tự có thể áp dụng thành các thực thể HTML

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

Làm cách nào để thoát khỏi thực thể HTML trong PHP?

Mẹo. Để chuyển đổi các thực thể HTML trở lại thành ký tự, hãy sử dụng hàm html_entity_decode() . Mẹo. Sử dụng hàm get_html_translation_table() để trả về bảng dịch được sử dụng bởi htmlentities().