2011-12-06 40 views
5

tôi đã có thử nghiệm mà làm việc tốt:PHP - preg_match và "modifier Unknown" lỗi

if (ereg("([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})", $dateToTest, $tab) == false) 

và như ereg bị phản đối, tôi đã thay thế mà thử nghiệm với một này:

if (preg_match("/([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})/", $dateToTest, $tab) == false) 

Nhưng Tôi nhận được lỗi sau:

Warning: preg_match() [function.preg-match]: Unknown modifier '.' in .................. 

Sự cố là gì và làm cách nào để giải quyết vấn đề?

+0

có thể trùng lặp của [Chuyển đổi biểu thức ereg thành preg] (http://stackoverflow.com/questions/6270004/converting- ereg-expression-to-preg) – mario

Trả lời

8

Vấn đề là dấu phân tách / vì bạn sử dụng nó trong regexp của mình một lần nữa.

Bạn phải thoát khỏi nó \/ hoặc sử dụng một delimiter như @:

if (preg_match("@([0-9]{2})[-/.]([0-9]{2})[-/.]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})@", $dateToTest, $tab) == false) 

Xem ví dụ # 3 trong Docu. Ngoài ra còn có một hướng dẫn sử dụng về delimiters.

+0

Tôi đã thêm một liên kết đến docu về các dấu phân cách. – PiTheNumber

4

Bạn có dấu gạch chéo không thoát trong biểu thức. Hoặc thay đổi / thành \/ hoặc sử dụng dấu tách khác nhau chẳng hạn như @ để bắt đầu biểu thức.

0

lỗi ở đây /.. tôi không biết ý của bạn là gì bởi regexp này, vì vậy bạn có thể thay đổi nó thành . hoặc \.

+0

Điều đó có vẻ hiển nhiên: Tôi thử nghiệm định dạng ngày giờ, có thể có 3 dấu phân tách cho ngày: [-. /] – Oliver

+0

@Oliver oh, xin lỗi. cuối ngày làm việc của tôi :) – k102

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