Hướng dẫn preg_match in php for name - preg_match trong php cho tên

Tôi gặp khó khăn với mã PHP của mình, điều này xác nhận biểu mẫu trên trang trước khi gửi email của tôi.

Đây là PHP của tôi trên trên HTML doctype


Và đối với HTML của tôi, để làm cho việc xem dễ dàng hơn, tôi sẽ đặt vào phần mẫu.


" method="post"> Name: Email: Subject: Comments:

Không có mã PHP khác trong HTML của tôi khác ngoài đã nêu ở trên.

Xác thực này chỉ hoạt động nếu bất kỳ trường nào bị bỏ trống. Nó sẽ nhắc MSG lỗi trong chính trang và sẽ không gửi trong email, đó là cách nó hoạt động ..

Tuy nhiên, tôi đang phải đối mặt với một vấn đề kỳ lạ mà dường như tôi không thể tìm ra lý do/lý thuyết/logic đằng sau nó. Nếu bạn nhìn vào mã PHP, nếu tôi không có cái đó nếu câu lệnh

else if (empty($_POST['name']) || empty($_POST['email']) || empty($_POST['subjectTitle']) || empty($_POST['comment'])) {        
    $error = true; 
}

Việc xác thực không thành công và vẫn sẽ gửi email khi các khóa người dùng trong TextArea. Ví dụ: nếu người dùng không điền vào tên, email và chủ đề nhưng chỉ có các bình luận, nó vẫn sẽ được gửi. Tuy nhiên, một khi tôi đặt cái khác nếu câu lệnh, nó sẽ khắc phục vấn đề.

Nhưng vấn đề chính là, preg_match. Tôi muốn các trường tên chỉ cho phép không gian và chữ cái và tôi muốn trường email chỉ cho phép email. Vì vậy, khi tôi cố gắng đặt mã này vào,

if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
     $nameError = true;
}

hoặc bằng cách kết hợp nó với kiểm tra trường trống tên

if (empty($_POST['name']) || (!preg_match("/^[a-zA-Z ]*$/",$name))) {
    $nameError = true;      
} 

Nó không xác thực chính xác. Những gì nó làm là, khi người dùng nhập một số vào trường Tên và cũng lấp đầy mọi thứ khác, nó sẽ hiển thị thông báo lỗi và cũng là thông báo cảm ơn và gửi nó đến email, đó không phải là cách nó nên hoạt động.

Vì vậy, tôi có thể có hướng dẫn về cách khắc phục vấn đề? Là mã hóa của tôi được thực hiện sai và tôi cũng muốn biết tại sao điều đó nếu tuyên bố mà tôi có trong PHP không có ý nghĩa gì tôi cần điều đó để có được xác nhận thích hợp.

Cảm ơn bạn rất nhiều vì đã đọc, đã bị mắc kẹt về điều này trong 6 ngày qua và tôi thực sự không biết cách khắc phục điều này. Làm ơn giúp tôi.

Chúc mừng

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

Đượ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_].

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:-

   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óm tắt tên người dùng Regex

Hãy để tóm tắt lại. Regex của chúng tôi có ba nhóm.

  • ^[A-Za-Z] chỉ có thể bắt đầu với các chữ cái. Hoặc chữ nhỏ hoặc chữ hoa.
  • . Vì hai ký tự để bắt đầu và kết thúc, tôi đã trừ chúng từ đầu và kết thúc yêu cầu.
  • [0-9A-AZ-Z] $ chỉ có thể kết thúc bằng một số và một chữ cái.

Làm cho tên người dùng của chúng tôi Regex ngắn hơn và tốt hơn.

Ngay bây giờ, Regex của chúng tôi hoạt động tốt. Nhưng nó có thể tốt hơn và ngắn hơn.

Đầu tiên, chúng tôi sẽ loại bỏ tất cả các phạm vi cho các chữ in hoa. Đó là nếu chúng tôi có [A-Z], chúng tôi không cần thêm A-Z. Bởi vì chúng ta có thể sử dụng cờ


" method="post"> Name: Email: Subject: Comments:
0. Điều mà trong Regex có nghĩa là, 'làm cho mẫu của tôi không nhạy cảm.

Tiếp theo, chúng ta có thể sử dụng lớp ký tự \ w thay vì [0-9a-ba-z.

Cuối cùng, đối với nhóm thứ ba của chúng tôi, chúng tôi có thể sử dụng lại Caret (^). Lần này chúng tôi sẽ sử dụng nó có nghĩa là, không. Vì vậy, nhóm cuối cùng của tôi sẽ là [^_].

Dưới đây là Regex cải tiến và cuối cùng của chúng tôi để xác nhận tên người dùng theo yêu cầu của chúng tôi.


" method="post"> Name: Email: Subject: Comments:
1

" method="post"> Name: Email: Subject: Comments:
2

" method="post"> Name: Email: Subject: Comments:
1 Như bạn có thể tưởng tượng, có rất nhiều cách để thực hiện những gì chúng tôi đã làm ở đây. Vì vậy, tôi khuyến khích bạn cố gắng đưa ra cách thức xác nhận tên người dùng của riêng bạn.
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.

PHP preg_match để xác thực số điện thoại của chúng tôi và Ethiopia

Các hình thức HTML5 hỗ trợ các loại đầu vào khác nhau. Và một trong số đó là loại số. Bạn có thể sử dụng nó để buộc người dùng chỉ đặt các số.

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:-


" method="post"> Name: Email: Subject: Comments:
1

" method="post"> Name: Email: Subject: Comments:
5

" method="post"> Name: Email: Subject: Comments:
1 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 tôi có thể xác nhận 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. Bạn cần xác nhận một vài điều: Chuỗi trống ...
$ 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 ;.

Preg_match có nghĩa là gì trong PHP?

Định nghĩa và sử dụng hàm preg_match () trả về xem một trận đấu có được tìm thấy trong một chuỗi hay không.returns whether a match was found in a string.

Giá trị trả về của hàm preg_match () là gì?

Trả về các giá trị ¶ preg_match () Trả về 1 nếu mẫu khớp với chủ đề đã cho, 0 nếu nó không hoặc sai khi thất bại.Hàm này có thể trả về Boolean Sai, nhưng cũng có thể trả về giá trị phi Boolean đánh giá là sai.Vui lòng đọc phần về Booleans để biết thêm thông tin.1 if the pattern matches given subject , 0 if it does not, or false on failure. This function may return Boolean false , but may also return a non-Boolean value which evaluates to false . Please read the section on Booleans for more information.

Việc sử dụng preg_match 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.