ऐसा प्रतीत होता है कि कुछ मामलों में PHP के preg_match
में दोहराने वाले वर्णों के मिलान के लिए 3276 वर्ण सीमा है।PHP preg_match लंबाई 3276 सीमा
अर्थात
^(.|\s){0,3276}$
काम करता है, लेकिन ^(.|\s){0,3277}$
नहीं करता है।
यह हमेशा लागू नहीं होता है, क्योंकि /^(.){0,3277}$/
काम करता है।
मुझे PHP के दस्तावेज़ या बग ट्रैकर में कहीं भी इसका उल्लेख नहीं किया जा सकता है। संख्या 3276 एक अजीब सीमा का थोड़ा सा लगता है, केवल एक चीज जिसे मैं सोच सकता हूं वह यह है कि यह 32767 का लगभग 1/10 वां है, जो एक हस्ताक्षरित 16-बिट पूर्णांक की सीमा है।
preg_last_error()
रिटर्न 0.
मैं http://www.phpliveregex.com/ पर इस मुद्दे के साथ-साथ अपने स्थानीय सिस्टम और वेब सर्वर reproduced गए हैं।
संपादित करें: ऐसा लगता है कि हमें "चेतावनी: preg_match(): संकलन विफल हो रहा है: कोड से बाहर ऑफसेट 16 पर नियमित अभिव्यक्ति बहुत बड़ी है, इसलिए यह PHP preg_match_all limit जैसा ही समस्या है।
हालांकि, रेगेक्स स्वयं बहुत बड़ा नहीं है ... क्या PHP किसी प्रकार का विस्तार करता है जब आप दोहराते हुए समूह बनाते हैं जो इसे बहुत बड़ा बना रहा है?
यह अधिक स्मृति की सीमा है, तो preg_match कई तत्वों के साथ एक सरणी लौटाएगा, इसलिए आपको बड़ी सरणी की अनुमति देने के लिए पर्याप्त स्मृति की आवश्यकता है, अपनी अधिकतम मेमोरी सीमा को ऊपर उठाने का प्रयास करें और देखें अगर यह बदल जाता है। –
क्या आपने 'preg_last_error()' की जांच की थी? –
आपकी त्रुटि रिपोर्टिंग पर है? यदि आप बहुत अधिक मेमोरी – x4rf41