2011-12-06 15 views
5

मुझे लगता है कि परीक्षण है कि ठीक काम किया था:पीएचपी preg_match और "अज्ञात आपरिवर्तक" त्रुटि

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

और के रूप में एरेग हटाई गई है, मैं इस एक के साथ कि परीक्षण जगह ले ली है:

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

लेकिन मुझे निम्न त्रुटि मिलती है:

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

समस्या क्या है और मैं इसे कैसे हल कर सकता हूं?

+0

संभावित डुप्लिकेट [पूर्व में अभिव्यक्तियों को बदलने के लिए] [http://stackoverflow.com/questions/6270004/converting- ereg-expressions-to-preg) – mario

उत्तर

8

समस्या delimiter / है क्योंकि आप इसे अपने regexp में फिर से उपयोग करते हैं।

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

देखें # 3 उदाहरण Docu में:

आप इसे \/ बचने या @ की तरह एक और सीमांकक उपयोग करना होगा। delimiters के बारे में एक मैनुअल भी है।

+0

मैंने डॉक्यूमीटर के बारे में डॉक्यू के लिए एक लिंक जोड़ा। – PiTheNumber

4

आपके पास अभिव्यक्ति में अनचाहे स्लेश हैं। या तो / से \/ बदलें या अभिव्यक्ति प्रारंभ करने के लिए @ जैसे एक अलग डिलीमीटर का उपयोग करें।

0

त्रुटि यहां /. है। मुझे नहीं पता कि इस regexp से आपका क्या मतलब है, ताकि आप इसे . या \.

+0

यह स्पष्ट प्रतीत होता है: मैं दिनांक-समय प्रारूप का परीक्षण करता हूं, जिसमें दिनांक के लिए 3 विभाजक हो सकते हैं: [-। /] – Oliver

+0

@ ओलिवर ओह, क्षमा करें। यह मेरे कामकाजी दिन का अंत है :) – k102

संबंधित मुद्दे