Hướng dẫn how to validate special characters in php - cách xác thực các ký tự đặc biệt trong php

Tôi chỉ muốn cho phép các chữ cái, số, không gian, unerscore và dấu gạch nối.

Cho đến nay tôi nghĩ rằng preg_match này sẽ thực hiện công việc:

if(preg_match('/[^a-z0-9 _]+$/i', $name)) {
$error = "Name may only contain letters, numbers, spaces, \"_\" and \"-\".";
}

Nhưng tôi chỉ nhận ra rằng các ký tự đặc biệt bên trong một chuỗi, sẽ không tạo ra lỗi. Ví dụ

Xin chào "@£ $ Joe

sẽ không tạo ra một lỗi. Có thể tạo ra một chút thay đổi và làm cho nó hoạt động, hoặc tôi cần một giải pháp khác?

hỏi ngày 16 tháng 4 năm 2012 lúc 7:50Apr 16, 2012 at 7:50

Hướng dẫn how to validate special characters in php - cách xác thực các ký tự đặc biệt trong php

2by2by2by

1.0335 huy hiệu vàng22 Huy hiệu bạc39 Huy hiệu đồng5 gold badges22 silver badges39 bronze badges

Vấn đề là với biểu tượng $. Bạn đặc biệt yêu cầu nó phù hợp với phần cuối của chuỗi. Biểu thức /[^a-z0-9 _]+$/i sẽ không khớp với

if(preg_match('/[^a-z0-9 _]+/i', $name)) {
// preg_match will return true if it finds 
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}
0 vì
if(preg_match('/[^a-z0-9 _]+/i', $name)) {
// preg_match will return true if it finds 
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}
1 khớp với
if(preg_match('/[^a-z0-9 _]+/i', $name)) {
// preg_match will return true if it finds 
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}
2; Vì vậy, nó rõ ràng sẽ không phù hợp khi bạn phủ nhận lớp học. Xóa biểu tượng $ và mọi thứ sẽ như mong đợi:

if(preg_match('/[^a-z0-9 _]+/i', $name)) {
// preg_match will return true if it finds 
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}

Kiểm tra nó trong trình duyệt của bạn bằng cách dán từng dòng này một trong bảng điều khiển JavaScript:

/[^a-z0-9 _]+/i.test("@hello");        // true
/[^a-z0-9 _]+/i.test("joe@");          // true
/[^a-z0-9 _]+/i.test("hello\"@£$joe"); // true
/[^a-z0-9 _]+/i.test("hello joe");     // false

Đã trả lời ngày 16 tháng 4 năm 2012 lúc 9:15Apr 16, 2012 at 9:15

Hướng dẫn how to validate special characters in php - cách xác thực các ký tự đặc biệt trong php

Salman Asalman aSalman A

252K80 Huy hiệu vàng423 Huy hiệu bạc513 Huy hiệu Đồng80 gold badges423 silver badges513 bronze badges

0

Bạn cần mang theo

if(preg_match('/[^a-z0-9 _]+/i', $name)) {
// preg_match will return true if it finds 
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}
4 bên ngoài lớp ký tự:

if(preg_match('/^[a-z0-9 _]+$/i', $name)) {

Một

if(preg_match('/[^a-z0-9 _]+/i', $name)) {
// preg_match will return true if it finds 
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}
4 bên trong (lúc đầu) Một lớp ký tự hoạt động giống như một trình phủ định lớp ký tự.

Đã trả lời ngày 16 tháng 4 năm 2012 lúc 7:53Apr 16, 2012 at 7:53

CodaddictCodaddictcodaddict

435K80 Huy hiệu vàng487 Huy hiệu bạc524 Huy hiệu đồng80 gold badges487 silver badges524 bronze badges

0

/^([a-z]|[A-Z]|[0-9]| |_|-)+$/

Sử dụng biểu thức chính quy này

Thiefmaster

303K78 Huy hiệu vàng582 Huy hiệu bạc625 Huy hiệu Đồng78 gold badges582 silver badges625 bronze badges

Đã trả lời ngày 16 tháng 4 năm 2012 lúc 7:55Apr 16, 2012 at 7:55

Vipin Jainvipin JainVipin Jain

1.3421 Huy hiệu vàng9 Huy hiệu bạc19 Huy hiệu đồng1 gold badge9 silver badges19 bronze badges

1

Ở đây lấy cái này:

/^[a-z0-9\s\-_]+$/i

Biểu thức này được tôi kiểm tra với dữ liệu giả.





Untitled Document




Sử dụng mã này trong tệp HTML Kiểm tra xác thực bằng cách điền vào giá trị và nhấn enter sau đó để kiểm tra xem có đúng hay không.

Lưu ý:- Biểu thức chính quy giống nhau cho tất cả các ngôn ngữ. regular expressions are same for all languages.


Đã trả lời ngày 16 tháng 4 năm 2012 lúc 8:43Apr 16, 2012 at 8:43

Vipin Jainvipin JainVipin Jain

1.3421 Huy hiệu vàng9 Huy hiệu bạc19 Huy hiệu đồng1 gold badge9 silver badges19 bronze badges

4

Làm thế nào để bạn kiểm tra xem một chuỗi có chứa một ký tự đặc biệt trong PHP không?

Hàm Php Check_String ($ my_String) {$ regex = preg_match ('[@_! #$%^&*()?/|} {~:]', $ my_string);if ($ regex) in ("chuỗi đã được chấp nhận");bản in khác ("Chuỗi chưa được chấp nhận");} $ my_string = 'this_is _ $ _ mẫu!

Làm cách nào để cho phép 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 các ký tự, hãy sử dụng hàm htmlspecialchars_decode () ...
& (ampersand) trở thành & amp ;.
"(trích dẫn kép) trở thành & quot ;.
'(Trích dẫn đơn) trở thành ' ;.
Hàm Php Check_String ($ my_String) {$ regex = preg_match ('[@_! #$%^&*()?/|} {~:]', $ my_string); if ($ regex) in ("chuỗi đã được chấp nhận"); bản in khác ("Chuỗi chưa được chấp nhận"); } $ my_string = 'this_is _ $ _ mẫu!
> (lớn hơn) trở thành & gt ;.

Tại sao chúng ta sử dụng htmlspecialchars trong PHP?

Hàm HTMLSpecialchars () chuyển đổi các ký tự đặc biệt thành các thực thể HTML.Đó là chức năng được xây dựng của PHP, chuyển đổi tất cả các ký tự được xác định trước thành các thực thể HTML.... Hằng số cờ có sẵn ..

Làm thế nào tôi chỉ có thể hạn chế một số ký tự đặc biệt trong PHP?

Để xóa các ký tự đặc biệt, sử dụng chức năng gọi là chức năng preg_match.use function called preg_match function.