Hướng dẫn preg_match for username validation in php - preg_match để xác thực tên người dùng trong php

Các ví dụ PHP preg_match có thể được sử dụng cho các dự án thực tế rất khó để thực hiện. Ở đây tôi cố gắng xây dựng Regex trong PHP bằng cách sử dụng các mã thực tế mà tôi đã sử dụng để xác thực tên người dùng, email, số điện thoại, v.v. Tuy nhiên, như thường lệ, tôi khuyên bạn nên kiểm tra những điều cơ bản của Regex từ trang web PHP chính thức. Ngoài ra, chúng ta nên sử dụng các hàm so sánh chuỗi PHP cơ bản như strpos cho một số nhiệm vụ này.

Ví dụ Php preg_match để xác nhận tên người dùng

Một tên người dùng điển hình có thể có các yêu cầu sau.

  • Nó phải bắt đầu với một lá thư.
  • Nó nên có kích thước hợp lý. Ví dụ lớn hơn 4 và không dưới 25.
  • Nó chỉ có thể chứa các chữ cái, số và ký tự dấu gạch dưới.
  • Và nó không thể kết thúc với một dấu gạch dưới.

Xem xét các yêu cầu trên, hãy để bắt đầu viết một mẫu preg_match sẽ xác nhận tên người dùng. Đầu tiên, chúng tôi sẽ thực hiện một cách tiếp cận rất dễ dàng và cố gắng làm cho mô hình của chúng tôi tốt hơn vì chúng tôi có được nhiều kiến ​​thức hơn về Regexes.

Yêu cầu đầu tiên là làm cho mẫu của chúng tôi bắt đầu với các chữ cái. Để thực hiện điều đó, chúng ta có thể sử dụng ký tự Caret (^). Trong đó có một ý nghĩa đặc biệt trong Regex.

Khi chúng tôi sử dụng ký tự Caret khi bắt đầu mẫu Regex, chúng tôi đang bảo PHP chỉ khớp với các chuỗi bắt đầu với bức thư đó. Do đó, một mẫu như dưới đây sẽ khớp với các chuỗi bắt đầu với PHP.

   $input = "PHP is great";
   preg_match('/^PHP/', $input);//Will return true

Nhập chế độ FullScreenen EXIT Mode FullScreen

Tương tự, chúng ta có thể sử dụng ký tự đồng đô la ($) để thực thi các kết thúc theo mẫu regex. Điều đó có nghĩa là,

   $input = "PHP is great";
   preg_match('/^PHP$/', $input);//Will return false.

Nhập chế độ FullScreenen EXIT Mode FullScreen

Tương tự, chúng ta có thể sử dụng ký tự đồng đô la ($) để thực thi các kết thúc theo mẫu regex. Điều đó có nghĩa là,

Rõ ràng, mã trên trả về sai vì chuỗi đầu vào kết thúc bằng ‘tuyệt vời không phải PHP. Để làm cho nó hoạt động, chúng ta có thể thay thế chuỗi đó bằng ‘tuyệt vời.

Điều này là tuyệt vời và tất cả. Nhưng nó vẫn thiếu trong việc trả lời các yêu cầu đầu tiên. Bởi vì chúng tôi có thể liệt kê tất cả các bảng chữ cái và bảo PHP thực thi điều đó.

Chúng ta có thể làm gì?

Các lớp ký tự để chỉ định phạm vi

$input = "abc";
preg_match('/^[a-zA-Z]$/', $input);//Will return true.

Nhập chế độ FullScreenen EXIT Mode FullScreen

Tương tự, chúng ta có thể sử dụng ký tự đồng đô la ($) để thực thi các kết thúc theo mẫu regex. Điều đó có nghĩa là,

Rõ ràng, mã trên trả về sai vì chuỗi đầu vào kết thúc bằng ‘tuyệt vời không phải PHP. Để làm cho nó hoạt động, chúng ta có thể thay thế chuỗi đó bằng ‘tuyệt vời.

Điều này là tuyệt vời và tất cả. Nhưng nó vẫn thiếu trong việc trả lời các yêu cầu đầu tiên. Bởi vì chúng tôi có thể liệt kê tất cả các bảng chữ cái và bảo PHP thực thi điều đó.

Chúng ta có thể làm gì?

Các lớp ký tự để chỉ định phạm vi

   $input = "abc2020";
   preg_match('/^[a-zA-Z]{4, 25}$/', $input);//Will return true.

Nhập chế độ FullScreenen EXIT Mode FullScreen

Tương tự, chúng ta có thể sử dụng ký tự đồng đô la ($) để thực thi các kết thúc theo mẫu regex. Điều đó có nghĩa là,

Rõ ràng, mã trên trả về sai vì chuỗi đầu vào kết thúc bằng ‘tuyệt vời không phải PHP. Để làm cho nó hoạt động, chúng ta có thể thay thế chuỗi đó bằng ‘tuyệt vời.

   function validateUserName($userName) {
     if(preg_match('/^[a-zA-Z][0-9a-zA-Z_]{2,23}[0-9a-zA-Z]$/',             $userName)) {
       return true;
     }
     return false;
   }

Nhập chế độ FullScreenen EXIT Mode FullScreen

Tương tự, chúng ta có thể sử dụng ký tự đồng đô la ($) để thực thi các kết thúc theo mẫu regex. Điều đó có nghĩa là,

Rõ ràng, mã trên trả về sai vì chuỗi đầu vào kết thúc bằng ‘tuyệt vời không phải PHP. Để làm cho nó hoạt động, chúng ta có thể thay thế chuỗi đó bằng ‘tuyệt vời.

  • Điều này là tuyệt vời và tất cả. Nhưng nó vẫn thiếu trong việc trả lời các yêu cầu đầu tiên. Bởi vì chúng tôi có thể liệt kê tất cả các bảng chữ cái và bảo PHP thực thi điều đó.
  • Chúng ta có thể làm gì?
  • Các lớp ký tự để chỉ định phạm vi

Thay vì liệt kê các bảng chữ cái, Regex cung cấp cho chúng tôi phạm vi lớp ký tự. Phạm vi là tuyệt vời khi chúng tôi muốn chỉ định toàn bộ bảng chữ cái. Cả chữ thường và chữ hoa. Hoặc để kiểm tra mọi số. Ví dụ:-

Đoạn mã trên là một sự xây dựng tuyệt vời của phạm vi. Nó kiểm tra xem đầu vào được tạo thành từ các chữ cái. Hoặc chữ nhỏ hoặc viết hoa. Tương tự, chúng tôi có thể áp dụng phạm vi, [0-9] để xác thực đầu vào của chúng tôi cho các số trong đó.

Đáng kinh ngạc. Bây giờ chúng tôi đang đến đó. Chúng tôi rõ ràng đang kiểm tra xem đầu vào người dùng của chúng tôi có bắt đầu và kết thúc bằng các chữ cái không.

Yêu cầu tiếp theo là kích thước của tên người dùng. Để kiểm tra kích thước, chúng tôi sử dụng định dạng, {n} trong regex. Trong đó n là số cho phép.

Hơn nữa, chúng ta có thể chỉ định giá trị tối thiểu và tối đa trong một nẹp như {n, m} này.

Vì vậy, chúng tôi đã sẵn sàng để xử lý yêu cầu thứ hai.

Được rồi, vì vậy chúng tôi đang ở yêu cầu thứ ba. Và nó nói rằng tên người dùng của chúng tôi chỉ có thể chứa các chữ cái, số và dấu gạch dưới. Tôi nghĩ rằng tại thời điểm này, chúng tôi có khả năng làm điều này mà không giới thiệu bất kỳ khái niệm mới nào. Chúng ta có thể sử dụng các phạm vi như thế này, [0-9A-ZA-Z_].
As you can imagine, there are so many ways to accomplish what we did here. So I encourage you to try to come up with your own ways of validating username.

Cuối cùng, cấm nhấn mạnh vào cuối. Hiện tại, chúng tôi sẽ gắn bó với một cú pháp phạm vi và chúng tôi có Regex cuối cùng với chức năng preg_match như thế này:-

Tóm tắt tên người dùng Regex

Vấn đề là khi bạn muốn để người dùng định dạng số điện thoại. Ví dụ, bằng cách cho phép họ đặt ký tự Dash. Trong những trường hợp đó, chúng tôi có thể sử dụng các lớp ký tự và bộ giới hạn phạm vi mà chúng tôi đã thấy ở trên để định dạng các số điện thoại của chúng tôi và Ethiopia như thế này:-

____1010____6 Tôi có thể đơn giản hóa mẫu này bằng cách thay thế lớp ký tự [0-9] bằng một đơn giản \ d. Mà chỉ đơn giản là chỉ ra bất kỳ chữ số nào.
I can simplify this pattern by replacing the character class [0-9] with a simple \d. Which simply indicates any digits.

Tiếp theo, chúng tôi sẽ xác nhận số điện thoại của giống địa phương của bạn. Đối với tôi, tôi đến từ Addis Ababa, Ethiopia. Vì vậy, tôi sẽ cố gắng và xác nhận số điện thoại của Hoa Kỳ và Ethiopia

Làm thế nào để xác thực một tên trong PHP?

PHP xác nhận dữ liệu ở phía máy chủ, được gửi bởi biểu mẫu HTML ...
$ name = $ _post ["name"] ;.
nếu (! ... .
$ Errmsg = "Chỉ cho phép bảng chữ cái và khoảng trắng." ;.
echo $ errmsg ;.
} khác {.
echo $ name ;.

Việc sử dụng preg_match trong PHP là gì?

PHP |hàm preg_match ().Hàm này tìm kiếm chuỗi cho mẫu, trả về đúng nếu mẫu tồn tại, nếu không thì trả về sai.Thông thường tìm kiếm bắt đầu từ đầu chuỗi chủ đề.Độ lệch tham số tùy chọn được sử dụng để chỉ định vị trí từ nơi bắt đầu tìm kiếm.searches string for pattern, returns true if pattern exists, otherwise returns false. Usually search starts from beginning of subject string. The optional parameter offset is used to specify the position from where to start the search.