Hướng dẫn php html decode

Hàm html_entity_decode() sẽ chuyển đổi các kí hiệu HTML entities thành các kí tự tương ứng.

Hướng dẫn php html decode

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Hàm html_entity_decode() có tác dụng ngược lại so với hàm htmlentities().

Cú pháp

Cú pháphtml_entity_decode( $str);

Trong đó:

Bài viết này được đăng tại [free tuts .net]

  • $str là chuỗi chứa các kí hiệu HTML entities cần được chuyển đổi.

Ví dụ

$html=" something like this   ";
$str = htmlentities( $html, ENT_COMPAT, 'UTF-8')."
"; $htmlentity = htmlentities( $str, ENT_COMPAT, 'UTF-8'); $str = html_entity_decode($htmlentity); echo $htmlentity . "
"; echo $str. "
";

Kết quả

<html> <head><head>something like this </html>
something like this

Tham khảo: php.net

Thỉnh thoảng, bạn sẽ phải chuyển các URL giữa các trang net và dịch vụ khác nhau. Nghe có vẻ như một nhiệm vụ khá dễ dàng vì URL về cơ bản chỉ là các chuỗi văn bản, nhưng mọi thứ đôi khi có thể trở nên phức tạp. Ví dụ: đôi khi bạn cần mã hóa một URL trong một URL khác, ví dụ như trong yêu cầu GET!

Trong hướng dẫn này, bạn sẽ tìm hiểu lý do tại sao bạn cần mã hóa hoặc giải mã URL của mình và cách sử dụng các hàm PHP tích hợp để làm như vậy.

  • Nhu cầu mã hóa và giải mã URL
  • Mã hóa URL với urlencode() và rawurlencode()
  • Giải mã URL với urldecode() và rawurldecode()
  • Lời kết

Nhu cầu mã hóa và giải mã URL

Có lẽ bạn muốn chuyển một URL dưới dạng tham số truy vấn đến một dịch vụ net hoặc một trang net khác. Ví dụ: bạn muốn gửi dữ liệu sau đến một trang net dưới dạng một chuỗi truy vấn:

Chìa khóa dữ liệu
chuyển hướng https://code.tutsplus.com
tác giả monty shokeen
trang 2

Thông tin đó sẽ được mã hóa trong chuỗi truy vấn sau:

https://www.instance.com?redirect=httpspercent3Apercent2Fpercent2Fcode.tutsplus.com&creator=montypercent20shokeen&web page=2

Lưu ý rằng các ký tự đặc biệt như :/ trong URL “chuyển hướng” đã được mã hóa thành %3A%2F để tránh can thiệp vào cấu trúc của URL tổng thể. Điều này được gọi là thoát và đó là nơi các chức năng mã hóa đi vào.

Máy chủ tại instance.com sẽ nhận URL được mã hóa đó trong chuỗi truy vấn và có thể sẽ cần giải mã nó sau này. Đó là nơi mà việc giải mã URL rất quan trọng.

Mã hóa URL với urlencode() và rawurlencode()

Có hai chức năng khác nhau trong PHP để mã hóa URL. Chúng được gọi là urlencode()rawurlencode(). Sự khác biệt chính giữa hai ký tự này là tập hợp các ký tự mà chúng mã hóa và cách chúng xử lý khoảng trắng.

Trong trường hợp urlencode(), hàm thay thế tất cả các ký tự không phải chữ và số khác ngoại trừ -, _. với một dấu phần trăm theo sau là hai chữ số hex. Mọi dấu cách đều được thay thế bằng + tính cách. Mặt khác, rawurlencode() hàm thay thế tất cả các ký tự không phải chữ và số khác ngoại trừ -, _, ., và ~ với một dấu phần trăm theo sau là hai chữ số hex. Hàm này cũng thay thế khoảng trắng bằng một phần trăm theo sau bởi hai chữ số hex: %20.

Ví dụ sau đây sẽ giúp bạn rõ ràng hơn một chút.

Như bạn có thể thấy, các ký tự không phải chữ và số như ?, /= được mã hóa theo cùng một cách bởi cả hai hàm. Tuy nhiên, urlencode() chức năng đã thay đổi php fundamentals đến php+fundamentals trong khi rawurlencode() đã thay đổi nó thành phppercent20basics.

Nói chung, nên dùng rawurlencode() để mã hóa tất cả các URL của bạn. Có một số lý do cho điều đó. Đầu tiên rawurlencode() hàm mã hóa URL dựa trên lược đồ RFC 3986 hiện đại hơn. Thứ hai, nó cung cấp khả năng tương thích tốt hơn nếu các URL bạn mã hóa phải được giải mã sau này bằng JavaScript.

Giải mã URL với urldecode() và rawurldecode()

Chức năng urldecode()rawurldecode() được sử dụng để khôi phục các thay đổi được thực hiện bởi urlencode()rawurlencode() chức năng.

Về cơ bản, điều này có nghĩa là tất cả các chuỗi chứa dấu phần trăm theo sau là hai chuỗi hex sẽ được thay thế bằng các ký tự thích hợp của chúng. Các urldecode() chức năng sẽ thay đổi + biểu tượng cho một ký tự khoảng trắng và rawurldecode() chức năng sẽ không thay đổi.

Đây là một ví dụ để minh họa sự khác biệt.

Trong ví dụ trên, chúng tôi đã sử dụng các hàm giải mã để giải mã các URL mà chúng tôi đã mã hóa trong ví dụ trước. Các $urlencoded_string biến đã thay đổi ký tự khoảng trắng thành +. Sử dụng urldecode() hàm trên chuỗi này thay đổi nó trở lại ký tự khoảng trắng. Tuy nhiên, rawurldecode() chức năng không bị ảnh hưởng.

Các $rawurlencoded_string biến có ký tự khoảng trắng được chuyển đổi thành %20 được xử lý theo cùng một cách bởi cả hai urldecode()rawurldecode().

Điều quan trọng là phải cẩn thận về chức năng mà bạn sử dụng để giải mã một URL được mã hóa vì kết quả cuối cùng có thể khác nhau tùy thuộc vào những gì bạn đã sử dụng để mã hóa nó ban đầu.

Lời kết

Trọng tâm của chúng tôi trong hướng dẫn này là dạy bạn cách mã hóa và giải mã URL bằng PHP. Chúng tôi bắt đầu với nhu cầu mã hóa và giải mã URL và sau đó cung cấp một cái nhìn tổng quan ngắn gọn về bốn chức năng khác nhau để thực hiện điều đó.

Như tôi đã đề cập trước đó, đặt cược an toàn nhất là sử dụng rawurlencode()rawurldecode() mọi nơi. Điều này sẽ đảm bảo tính nhất quán trong mã của riêng bạn cũng như khả năng tương thích với các ngôn ngữ khác sử dụng lược đồ mã hóa và giải mã URL mới.