Làm cách nào để thoát các ký tự đặc biệt trong PHP?
Vì các chương trình PHP thường tương tác với các trang HTML, địa chỉ web (URL) và cơ sở dữ liệu nên có các chức năng giúp bạn làm việc với các loại dữ liệu đó. Các lệnh HTML, địa chỉ trang web và cơ sở dữ liệu đều là các chuỗi, nhưng chúng yêu cầu các ký tự khác nhau được thoát theo các cách khác nhau. Chẳng hạn, một khoảng trống trong địa chỉ web phải được viết là 2, trong khi dấu nhỏ hơn nghĩa đen ( 3) trong tài liệu HTML phải được viết là 3. PHP có một số chức năng tích hợp để chuyển đổi sang và từ các bảng mã này Các ký tự đặc biệt trong HTML được đại diện bởi các thực thể như 5 và 3. Có hai hàm PHP biến các ký tự đặc biệt trong một chuỗi thành các thực thể của chúng. một để xóa các thẻ HTML và một để chỉ trích xuất các thẻ 7 Thực thể trích dẫn tất cả các ký tự đặc biệtHàm 8 thay đổi tất cả các ký tự có thực thể HTML tương đương thành các ký tự tương đương đó (ngoại trừ ký tự khoảng trắng). Điều này bao gồm dấu nhỏ hơn (_______0_______3), dấu lớn hơn ( $output = htmlspecialchars(0), dấu và ( 5) và các ký tự có dấu Ví dụ
Phiên bản không có thực thể ( $output = htmlspecialchars(2—được xem bằng cách xem nguồn) hiển thị chính xác dưới dạng ü trong trang web được hiển thị. Như bạn có thể thấy, không gian chưa được biến thành $output = htmlspecialchars(3 Hàm 8 thực sự có tới ba đối số $output = htmlentities( Tham số $output = htmlspecialchars(5, nếu được cung cấp, xác định bộ ký tự. Mặc định là “ISO-8859-1. ” Tham số $output = htmlspecialchars(6 kiểm soát xem dấu ngoặc đơn và dấu ngoặc kép có được chuyển thành dạng thực thể của chúng hay không. $output = htmlspecialchars(7 (mặc định) chỉ chuyển đổi dấu ngoặc kép, $output = htmlspecialchars(8 chuyển đổi cả hai loại dấu ngoặc kép và $output = htmlspecialchars(9 không chuyển đổi. Không có tùy chọn để chỉ chuyển đổi dấu nháy đơn. Ví dụ
Thực thể chỉ trích dẫn các ký tự cú pháp HTMLHàm 0 chuyển đổi tập hợp thực thể nhỏ nhất có thể để tạo HTML hợp lệ. Các thực thể sau được chuyển đổi
Nếu bạn có ứng dụng hiển thị dữ liệu mà người dùng đã nhập vào biểu mẫu, bạn cần chạy dữ liệu đó qua 0 trước khi hiển thị hoặc lưu dữ liệu đó. Nếu không, và người dùng nhập một chuỗi như 4 hoặc 5, trình duyệt sẽ nghĩ rằng các ký tự đặc biệt là HTML, dẫn đến một trang bị cắt xén Giống như 8, 0 có thể có tối đa ba đối số________số 8_______ Các đối số $output = htmlspecialchars(6 và $output = htmlspecialchars(5 có cùng ý nghĩa như đối với 8 Không có chức năng cụ thể để chuyển ngược lại từ các thực thể về văn bản gốc, bởi vì điều này hiếm khi cần thiết. Có một cách tương đối đơn giản để làm điều này, mặc dù. Sử dụng hàm 1 để tìm nạp bảng dịch được sử dụng bởi một trong hai hàm này theo một kiểu trích dẫn nhất định. Ví dụ: để lấy bảng dịch mà 8 sử dụng, hãy làm điều này
Để lấy bảng cho 0 ở chế độ $output = htmlspecialchars(9, hãy sử dụng
Một mẹo hay là sử dụng bảng dịch này, lật nó bằng cách sử dụng 5 và đưa nó vào 6 để áp dụng nó vào một chuỗi, do đó thực hiện ngược lại một cách hiệu quả với 8
Tất nhiên, bạn cũng có thể tìm nạp bảng dịch, thêm bất kỳ bản dịch nào khác mà bạn muốn vào đó, rồi thực hiện 6. Ví dụ: nếu bạn muốn 8 cũng mã hóa khoảng trắng thành $output = htmlspecialchars(3, bạn sẽ thực hiện
Hàm 1 xóa các thẻ HTML khỏi một chuỗi
Hàm có thể lấy một đối số thứ hai chỉ định một chuỗi các thẻ để lại trong chuỗi. Chỉ liệt kê các hình thức mở đầu của các thẻ. Các dạng đóng của thẻ được liệt kê trong tham số thứ hai cũng được giữ nguyên
Các thuộc tính trong các thẻ được bảo quản không bị thay đổi bởi 1. Bởi vì các thuộc tính như 3 và 4 có thể ảnh hưởng đến giao diện và hành vi của các trang web, nên việc duy trì một số thẻ có 1 sẽ không nhất thiết loại bỏ khả năng lạm dụng Hàm 6 trả về một mảng các thẻ meta cho trang HTML, được chỉ định dưới dạng tên tệp cục bộ hoặc URL. Tên của thẻ meta (_______56_______7, 8, 9, v.v. ) trở thành khóa trong mảng và nội dung của thẻ meta trở thành giá trị tương ứng $output = htmlentities(0 Dạng tổng quát của hàm là $output = htmlentities(1 Truyền giá trị 0 cho 1 để cho phép PHP cố gắng mở tệp bằng đường dẫn bao gồm tiêu chuẩn PHP cung cấp các hàm để chuyển đổi sang và từ mã hóa URL, cho phép bạn xây dựng và giải mã URL. Thực tế, có hai loại mã hóa URL, khác nhau về cách chúng xử lý khoảng trắng. Đầu tiên (được chỉ định bởi RFC 3986) coi khoảng trắng chỉ là một ký tự không hợp lệ khác trong URL và mã hóa nó thành 2. Thứ hai (triển khai hệ thống 3) mã hóa một khoảng trắng dưới dạng 4 và được sử dụng để xây dựng các chuỗi truy vấn Lưu ý rằng bạn không muốn sử dụng các chức năng này trên một URL hoàn chỉnh, chẳng hạn như http. //www. ví dụ. com/xin chào, vì chúng sẽ thoát khỏi dấu hai chấm và dấu gạch chéo để tạo ra $output = htmlentities(2 Chỉ mã hóa một phần URL (bit sau http. //www. ví dụ. com/) và thêm giao thức và tên miền sau Mã hóa và giải mã RFC 3986Để mã hóa một chuỗi theo quy ước URL, hãy sử dụng 5 $output = htmlentities(3 Hàm này lấy một chuỗi và trả về một bản sao có các ký tự URL không hợp lệ được mã hóa theo quy ước 6 Nếu bạn đang tạo động các tham chiếu siêu văn bản cho các liên kết trong một trang, bạn cần chuyển đổi chúng bằng 5 $output = htmlentities(4 Hàm 8 giải mã các chuỗi được mã hóa URL $output = htmlentities(5 Các hàm 9 và 0 chỉ khác với các hàm thô ở chỗ chúng mã hóa khoảng trắng dưới dạng dấu cộng ( 4) thay vì dưới dạng chuỗi 2. Đây là định dạng để xây dựng chuỗi truy vấn và giá trị cookie. Các chức năng này có thể hữu ích trong việc cung cấp các URL giống như biểu mẫu trong HTML. PHP tự động giải mã các chuỗi truy vấn và giá trị cookie, vì vậy bạn không cần sử dụng các hàm này để xử lý các giá trị đó. Các chức năng hữu ích để tạo chuỗi truy vấn $output = htmlentities(6 Hầu hết các hệ thống cơ sở dữ liệu đều yêu cầu ký tự chuỗi ký tự trong các truy vấn SQL của bạn được thoát. Lược đồ mã hóa của SQL khá đơn giản—dấu nháy đơn, nháy kép, NUL-byte và dấu gạch chéo ngược cần phải được đặt trước dấu gạch chéo ngược. Hàm 3 thêm các dấu gạch chéo này và hàm 4 loại bỏ chúng $output = htmlentities(7 Ghi chúMột số cơ sở dữ liệu (ví dụ: Sybase) thoát dấu nháy đơn bằng dấu nháy đơn khác thay vì dấu gạch chéo ngược. Đối với những cơ sở dữ liệu đó, hãy bật 5 trong php của bạn. tập tin ini Hàm 6 thoát các ký tự tùy ý bằng cách đặt dấu gạch chéo ngược trước chúng. Ngoại trừ các ký tự trong , các ký tự có giá trị ASCII nhỏ hơn 32 hoặc cao hơn 126 được mã hóa bằng các giá trị bát phân của chúng (e. g. , 7). Các hàm 6 và 9 được sử dụng với các hệ thống cơ sở dữ liệu không chuẩn có ý tưởng riêng về ký tự nào cần được thoát Bảng 4-4. Thoát một ký tự được nhận dạng bởi addcslashes() và stripcslashes() giá trị ASCII mã hóa 7 $output = htmlentities(00 8 $output = htmlentities(01 9 $output = htmlentities(02 10 $output = htmlentities(03 11 $output = htmlentities(04 12 $output = htmlentities(05 13 $output = htmlentities(06 Gọi 6 với hai đối số—chuỗi cần mã hóa và ký tự cần thoát $output = htmlentities(8 Chỉ định một phạm vi ký tự để thoát với cấu trúc $output = htmlentities(08 $output = htmlentities(9 Cẩn thận khi chỉ định $output = htmlentities(09, $output = htmlentities(10, $output = htmlentities(11, $output = htmlentities(12, $output = htmlentities(13, $output = htmlentities(14, $output = htmlentities(15 hoặc $output = htmlentities(16 trong bộ ký tự, vì chúng sẽ bị biến thành $output = htmlentities(17, $output = htmlentities(18, v.v. Những lần thoát này được C và PHP nhận ra và có thể gây nhầm lẫn Làm cách nào để thoát các ký tự đặc biệt trong PHP MySQL?Hàm real_escape_string() / mysqli_real_escape_string() thoát các ký tự đặc biệt trong chuỗi để sử dụng trong truy vấn SQL, có tính đến hiện tại .
Làm cách nào để thay thế các ký tự đặc biệt trong chuỗi trong PHP?Để thay thế các ký tự đặc biệt trong một chuỗi, bạn có thể sử dụng hàm str_replace() . Hàm str_replace() được sử dụng để thay thế tất cả các lần xuất hiện của các ký tự cụ thể bằng ký tự thay thế mà bạn đã chỉ định làm tham số của nó.
Bốn cách thoát sang PHP là gì?Các chuỗi thoát được sử dụng rộng rãi trong PHP
. \' – To escape ' within the single-quoted string. \” – Để thoát “ trong chuỗi trích dẫn kép. \\ – Để thoát khỏi dấu gạch chéo ngược. \$ – Để thoát $.
Làm cách nào để thoát các ký tự dòng mới trong PHP?Không có cách nào thoát dòng mới trong PHP . Như đã đề cập trong tài liệu PHP về chuỗi sau khi liệt kê tất cả các ký tự thoát. Như trong các chuỗi trích dẫn đơn, thoát khỏi bất kỳ ký tự nào khác cũng sẽ dẫn đến dấu gạch chéo ngược được in. |