2010-08-26 32 views
58

Đây là regex Tôi đang cố gắng để sử dụng:"Công cụ sửa đổi không xác định 'g' trong ..." khi sử dụng preg_match trong PHP?

/^(\w|\.|-)[email protected](\w|-)+?\.\w{2,4}($|\.\w{2,4})$/gim 

Tôi tìm thấy nó trên this site, và nó hoạt động tuyệt vời khi tôi thử nó ra khỏi đó. Nhưng ngay sau khi tôi đặt nó vào mã của mình, tôi nhận được thông báo này:

Warning: preg_match() [function.preg-match]: Unknown modifier 'g' in C:\xampp\htdocs\swebook\includes\classes.php on line 22 

Bất cứ ai có thể giải thích điều gì sai, và tại sao nó hoạt động trên trang web đó chứ không phải mã của tôi?

+1

Chúng ta có thể cung cấp cho bạn sự giúp đỡ tốt hơn nếu chúng ta biết chính xác những gì bạn đang cố gắng để làm với regex. Và bạn * cần * trợ giúp tốt hơn - dù sao cũng vậy. Trong số tất cả các email được viết kém có sẵn trên trang web đó, bạn có thể đã chọn một trang web tồi tệ nhất. :/ –

+2

FYI, regexp của bạn sẽ xác thực OK loại thư này: "-.-.-.--. @ - some--domain--.com" và các loại thư VALID này sẽ KHÔNG xác thực: "thông tin @ subdomain.domain.com ". Cuối cùng nhưng không kém phần quan trọng \ w là RẤT NGUY HIỂM gây ra PHP preg sử dụng Perl tương thích Regular Expressions và NOT POSIX như Javascript. Nếu PHP chạy trên máy chủ không phải là địa phương được US/UK bản địa hóa, nó sẽ khớp với các chữ cái có dấu để bạn có thể khớp với "àèìòù@domain.com" có một thư hợp lệ. Đọc ở đây để biết thêm chi tiết: http://it.php.net/manual/en/function.preg-replace.php#92443 –

Trả lời

Các vấn đề liên quan