Làm cách nào để xác thực các ký tự đặc biệt trong php?

Mẹo. Để chuyển đổi các thực thể HTML đặc biệt trở lại thành các ký tự, hãy sử dụng hàm htmlspecialchars_decode[]

cú pháp

htmlký tự đặc biệt[chuỗi,cờ,bộ ký tự,double_encode]

Giá trị tham số

Tham sốChuỗi mô tảBắt buộc. Chỉ định chuỗi để convertflagsOptional. Chỉ định cách xử lý dấu ngoặc kép, mã hóa không hợp lệ và loại tài liệu được sử dụng

Các kiểu trích dẫn có sẵn là

  • ENT_COMPAT - Mặc định. Chỉ mã hóa dấu ngoặc kép
  • ENT_QUOTES - Mã hóa dấu ngoặc kép và dấu nháy đơn
  • ENT_NOQUOTES - Không mã hóa bất kỳ trích dẫn nào

mã hóa không hợp lệ

  • ENT_IGNORE - Bỏ qua mã hóa không hợp lệ thay vì để hàm trả về chuỗi rỗng. Nên tránh, vì nó có thể có ý nghĩa bảo mật
  • ENT_SUBSTITUTE - Thay thế mã hóa không hợp lệ cho một bộ ký tự được chỉ định bằng Ký tự thay thế Unicode U+FFFD [UTF-8] hoặc &#FFFD;
  • ENT_DISALLOWED - Thay thế các điểm mã không hợp lệ trong loại tài liệu đã chỉ định bằng Ký tự thay thế Unicode U+FFFD [UTF-8] hoặc &#FFFD;

Các cờ bổ sung để chỉ định loại tài liệu đã sử dụng

  • ENT_HTML401 - Mặc định. Xử lý mã dưới dạng HTML 4. 01
  • ENT_HTML5 - Xử lý mã dưới dạng HTML 5
  • ENT_XML1 - Xử lý mã dưới dạng XML 1
  • ENT_XHTML - Xử lý mã dưới dạng XHTML
bộ ký tựTùy chọn. Một chuỗi chỉ định sử dụng bộ ký tự nào

Các giá trị được phép là

  • UTF-8 - Mặc định. Unicode 8 bit tương thích nhiều byte tương thích ASCII
  • ISO-8859-1 - Tây Âu
  • ISO-8859-15 - Tây Âu [thêm ký hiệu Euro + chữ cái tiếng Pháp và tiếng Phần Lan bị thiếu trong ISO-8859-1]
  • cp866 - Bộ ký tự Cyrillic dành riêng cho DOS
  • cp1251 - Bộ ký tự Cyrillic dành riêng cho Windows
  • cp1252 - Bộ ký tự dành riêng cho Windows cho Tây Âu
  • KOI8-R - Nga
  • BIG5 - Tiếng Trung phồn thể, chủ yếu dùng ở Đài Loan
  • GB2312 - Tiếng Trung giản thể, bộ ký tự chuẩn quốc gia
  • BIG5-HKSCS - Big5 với phần mở rộng Hồng Kông
  • Shift_JIS - Tiếng Nhật
  • EUC-JP - Tiếng Nhật
  • MacRoman - Bộ ký tự được Mac OS sử dụng

Ghi chú. Các bộ ký tự không được nhận dạng sẽ bị bỏ qua và được thay thế bằng ISO-8859-1 trong các phiên bản trước PHP 5. 4. Kể từ PHP 5. 4, nó sẽ bị bỏ qua và được thay thế bằng UTF-8

double_encodeTùy chọn. Một giá trị boolean chỉ định có mã hóa các thực thể html hiện có hay không
  • ĐÚNG - Mặc định. Sẽ chuyển đổi mọi thứ
  • SAI - Sẽ không mã hóa các thực thể html hiện có

chi tiết kỹ thuật

Giá trị trả về. Trả về chuỗi đã chuyển đổi

Nếu chuỗi chứa mã hóa không hợp lệ, nó sẽ trả về một chuỗi trống, trừ khi cờ ENT_IGNORE hoặc ENT_SUBSTITUTE được đặt

Người dùng gửi thông tin đến một trang web không phải lúc nào cũng cư xử như bạn muốn. Thông thường, họ mắc một số lỗi không đáng có, chẳng hạn như định dạng sai những gì họ gửi [có lẽ do bỏ qua mã vùng trong số điện thoại]. Nhưng chắc chắn cũng có một số người cố gắng lạm dụng các trang Web phổ biến. Đối với cả hai nhóm người dùng, điều quan trọng là tập lệnh PHP phải xác minh rằng những gì họ gửi là chính xác. Quá trình này được gọi là xác thực đầu vào

Một trong những công cụ hữu ích nhất để xác thực đầu vào là hàm preg_match của PHP. Đây không phải là một chức năng dễ học, nhưng nó có thể là một cách hiệu quả để kiểm tra xem nội dung nào đó mà người dùng nhập có phù hợp với định dạng mà trang Web của bạn yêu cầu hay không. Dưới đây là một đoạn PHP ví dụ để xác nhận rằng mã ZIP do người dùng gửi thực sự là một số có 5 chữ số. [Điều này sẽ không hoạt động đối với những người từ các quốc gia khác ngoài Hoa Kỳ. S. ]

if[preg_match["/^[0-9]{5}$/", $form_zipcode]] {
    echo "The ZIP code must be a 5-digit number.";
}

Hàm preg_match nhận hai tham số. Đầu tiên, được gọi là mẫu, mô tả các đầu vào tiềm năng. Đó là một chuỗi bắt đầu và kết thúc bằng dấu gạch chéo ['/'], bao quanh một biểu thức chính quy. Ngay bây giờ, biểu thức chính quy cụ thể xuất hiện ở trên [^[0-9]{5}$] sẽ trông vô nghĩa, nhưng chúng ta sẽ nghiên cứu các biểu thức chính quy sau trong chương này. Tham số thứ hai là chuỗi mà preg_match sẽ so sánh mẫu. Hàm trả về true hoặc false tùy thuộc vào việc chúng có khớp hay không

12. 2. biểu thức chính quy

Biểu thức chính quy là cách phổ biến để mô tả một tập hợp lớn các chuỗi có thể. Nó có thể được coi là một ngôn ngữ thu nhỏ, mặc dù nó được thể hiện ở dạng cô đọng

12. 2. 1. dãy con phù hợp

Hình thức đơn giản nhất của biểu thức chính quy là một chuỗi các chữ cái hoặc chữ số; . Ví dụ: mẫu amb sẽ khớp với amble hoặc Cambridge, nhưng không khớp với Amber [vì nó phân biệt chữ hoa chữ thường] hoặc aplomb [vì các chữ cái amb phải liền kề nhau]

Nhưng có một số ký hiệu đặc biệt người ta có thể sử dụng. Một là tập hợp các dấu ngoặc '[' và ']', biểu thị sự lựa chọn giữa một số ký tự. Nếu chúng ta muốn chữ a được viết hoa trong ví dụ trên, thì chúng ta có thể sử dụng [Aa]mb làm mẫu của mình. Bạn cũng có thể chỉ ra một dãy ký tự bên trong dấu ngoặc bằng dấu gạch nối;

Đôi khi cũng hữu ích khi cho phép bất kỳ ký tự nào xuất hiện ở một vị trí cụ thể trong biểu thức chính quy. một thời kỳ'. ' sẽ khớp với bất kỳ ký tự đơn nào

12. 2. 2. Phù hợp với chuỗi đầy đủ

Thông thường nhất với đầu vào của người dùng, bạn sẽ muốn khớp toàn bộ chuỗi, không tìm kiếm một chuỗi con cụ thể. Để nói rằng mẫu phải khớp bắt đầu từ đầu chuỗi, bạn bắt đầu mẫu bằng dấu mũ ['^']. Và để nói rằng mẫu phải khớp với kết thúc ở cuối chuỗi, bạn kết thúc mẫu bằng ký hiệu đô la ['$']. Thông thường, bạn sẽ sử dụng cả hai. Ví dụ: để xác nhận rằng mã trạng thái do người dùng gửi có chứa hai chữ cái viết hoa, bạn có thể sử dụng mẫu ^[A-Z][A-Z]$

12. 2. 3. lặp đi lặp lại

Bạn có thể sử dụng một bộ dấu ngoặc nhọn ['{' và '}'] để chỉ định rằng nội dung nào đó sẽ xuất hiện với số lần cụ thể trong một biểu thức chính quy. Bạn sẽ đặt dấu ngoặc ngay sau mẫu sẽ được lặp lại số lần đó và số sẽ xuất hiện trong dấu ngoặc. Một cách khác để viết mẫu mã trạng thái gồm hai chữ cái của chúng tôi là ^[A-Z]{2}$. Chúng tôi cũng đã thấy trước đó rằng chúng tôi có thể khớp mã ZIP gồm 5 chữ số bằng cách sử dụng mẫu ^[0-9]{5}$

Một bộ dấu ngoặc nhọn cũng có thể chứa hai số bên trong, quy định rằng số lần lặp lại của mẫu trước đó phải nằm giữa hai số đó. Ví dụ: bộ số từ 1000 đến 99999 có thể được mô tả bằng ^[1-9][0-9]{2,4}$

Bạn có thể sử dụng một bộ dấu ngoặc đơn để chỉ định thứ tự các thao tác. Điều này có thể hữu ích khi bạn muốn một mẫu gồm nhiều ký tự có khả năng lặp lại nhiều lần. Chúng tôi có thể mở rộng mẫu mã ZIP của mình để cho phép mã ZIP gồm 5 chữ số hoặc 9 chữ số bằng cách sử dụng ^[0-9]{5}[-[0-9]{4}]{0,1}$. Ở đây, chúng tôi đã sử dụng dấu ngoặc đơn để đặt dấu gạch ngang cuối cùng và bốn chữ số, nói rằng phần này được phép xảy ra 0 hoặc 1 lần

Có một cách viết tắt để nói 0 hoặc 1 lần. Bạn có thể sử dụng dấu chấm hỏi ['?'] thay cho {0,1}. Tương tự, bạn có thể sử dụng dấu hoa thị ['*'] để cho biết rằng mẫu trước đó có thể lặp lại nhiều lần bất kỳ [bao gồm cả khả năng mẫu đó hoàn toàn không xuất hiện]; . Nếu tôi muốn mô tả tập hợp các chuỗi mô tả số nguyên, tôi có thể sử dụng biểu thức chính quy ^-?[0-9]+$. Nó nói rằng chuỗi có thể bắt đầu bằng một dấu âm, nhưng nó phải chứa ít nhất một chữ số

12. 2. 4. Tóm lược

Cuối cùng, đôi khi bạn sẽ muốn một biểu thức chính quy đề cập đến một trong những ký tự có ý nghĩa đặc biệt trong một biểu thức chính quy. Bạn có thể loại bỏ ý nghĩa đặc biệt của nó thành preg_match bằng cách đặt trước nó một dấu gạch chéo ngược. Thật không may, dấu gạch chéo ngược trong chuỗi cũng có ý nghĩa đặc biệt đối với PHP, vì vậy bạn thực sự nên đặt trước nó bằng hai dấu gạch chéo ngược, để preg_match sẽ nhận được một trong số chúng. Chẳng hạn, một biểu thức chính quy mà người ta có thể sử dụng để mô tả địa chỉ e-mail là ^[a-z]+@[a-z]+[\. [a-z]+]+$. Điều này nói rằng phải có một hoặc nhiều chữ cái trước dấu '@', theo sau là một hoặc nhiều chữ cái, theo sau là một hoặc nhiều trường hợp dấu chấm, sau đó là một hoặc nhiều chữ cái. Khoảng thời gian phải được đặt trước dấu gạch chéo ngược, vì nếu không thì preg_match sẽ cho phép bất kỳ ký tự nào thay cho dấu chấm. [Biểu thức chính quy này bị thiếu vì một số tổ chức sử dụng dấu chấm trong địa chỉ email và một số tên miền chứa dấu gạch nối. ]

Mô tả ở trên không phải là mô tả đầy đủ về các tùy chọn có sẵn với biểu thức chính quy, nhưng nó phù hợp với hầu hết các mục đích. Dưới đây là tổng hợp tất cả các kí tự đặc biệt mà chúng ta đã xem

Làm cách nào để kiểm tra xem một ký tự có phải là ký tự đặc biệt trong PHP không?

hàm php check_string[$my_string]{ $regex = preg_match['[@_. #$%^&*[]?/. {~. ]', $my_string];

Làm cách nào để thoát các ký tự đặc biệt trong PHP?

Thoát nhân vật . the backslash sign [ \ ] is used as an "escape character".

Làm cách nào để sử dụng Preg_match trong PHP?

PHP. hàm preg_match[]. Hàm này tìm kiếm mẫu trong chuỗi, trả về true nếu mẫu tồn tại, ngược lại trả về false . Thông thường tìm kiếm bắt đầu từ đầu chuỗi chủ đề. Tham số tùy chọn offset được sử dụng để xác định vị trí bắt đầu tìm kiếm từ đâu.

Làm cách nào để hạn chế các ký tự đặc biệt trong hộp văn bản trong PHP?

Đây là những gì bạn đang theo đuổi. $result = preg_replace["/[^a-zA-Z0-9]+/", "", $inputVar]; Nếu bạn là .

Chủ Đề