2010-08-26 9 views
58

इस regex मैं उपयोग करने के लिए कोशिश कर रहा हूँ है:"अज्ञात संशोधक 'जी' में ..." PHP में preg_match का उपयोग करते समय?

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

मैं this site पर मिला है, और यह बहुत अच्छा काम करता है जब मैं इसे बाहर की कोशिश करो।

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

किसी को क्या गलत है व्याख्या कर सकते हैं, और क्यों यह है कि वेबसाइट पर और मेरे कोड में नहीं काम कर रहा है: लेकिन जैसे ही मैं अपने कोड में यह जगह के रूप में, मैं यह संदेश प्राप्त?

+1

हम अगर हम वास्तव में क्या आप regex के साथ क्या करने की कोशिश कर रहे थे पता था कि आप बेहतर मदद दे सकता है। और आपको * बेहतर मदद चाहिए - या रेगेक्स करता है, वैसे भी। उस साइट पर उपलब्ध सभी खराब लिखित ईमेल regexes में से, आप शायद सबसे खराब चुना होगा। :/ –

+2

एफवाईआई, आपका regexp इस प्रकार के मेल ठीक से मान्य करेगा: "-.-।-.--। @ - some--domain--.com" और इन प्रकार के वालिड मेल मान्य नहीं होंगे: "जानकारी @ subdomain.domain.com "। अंतिम लेकिन कम से कम \ w बहुत खतरनाक कारण नहीं है PHP preg पर्ल संगत नियमित अभिव्यक्तियों का उपयोग करता है और जावास्क्रिप्ट की तरह POSIX नहीं। यदि PHP सर्वर पर चलता है जो यूएस/यूके स्थानीयकृत नहीं है \ w भी उच्चारण अक्षरों से मेल खाता है तो आप "àèìòù@domain.com" से मेल खाते हैं, एक वैध मेल है। अधिक जानकारी के लिए यहां पढ़ें: http://it.php.net/manual/en/function.preg-replace.php#92443 –

उत्तर

108

के लिए कोई संशोधक g नहीं है। इसके बजाय, आपको preg_match_all फ़ंक्शन का उपयोग करना होगा।

तो बजाय:

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

उपयोग:

preg_match_all("/^(\w|\.|-)[email protected](\w|-)+?\.\w{2,4}($|\.\w{2,4})$/im", ....) 
संबंधित मुद्दे