Hướng dẫn php input validation special characters - ký tự đặc biệt xác thực đầu vào php

2

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

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

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

Salman Asalman aSalman A

253K80 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àng488 Huy hiệu bạc525 Huy hiệu đồng80 gold badges488 silver badges525 bronze badges

0

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

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

Thiefmaster

303K79 Huy hiệu vàng583 Huy hiệu bạc625 Huy hiệu Đồng79 gold badges583 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

function valueanalysis[form]{
    var vals = form.vals.value;

    alert[/^[a-z0-9\s\-_]+$/i.test[vals]];

    return false;
}










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 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 ' ;.
Làm cách nào để cho phép các ký tự đặc biệt trong PHP?
> [lớn hơn] trở thành & gt ;.

Preg_match_all trong PHP là gì?

Hàm preg_match_all [] trả về số lượng trận đấu của một mẫu được tìm thấy trong một chuỗi và tạo ra một biến với các trận đấu được tìm thấy.returns the number of matches of a pattern that were found in a string and populates a variable with the matches that were found.

Làm thế nào để bạn xóa các ký tự đặc biệt trong HTML?

Điều này sẽ làm những gì bạn đang tìm kiếm: Function Clean [$ String] {$ String = str_replace ['', '-', $ String];// Thay thế tất cả các không gian bằng dấu gạch nối.trả về preg_replace ['/[^a-za-z0-9 \-]/', '', $ String];// Loại bỏ các ký tự đặc biệt.}

Bài Viết Liên Quan

Chủ Đề