समाधान (जिसका अन्य उत्तर उल्लेख नहीं करते हैं - कम से कम मेरे मूल रूप से यह लिखते समय) यह है कि जब PHP सीमांकक को संदर्भित करता है, तो यह आपके कोड में दिखाई देने वाले परिसीमन (जो उद्धरण चिह्न हैं) का उल्लेख नहीं करता है लेकिन अगला स्ट्रिंग के अंदर वर्ण। (वास्तव में मैंने इसे कभी भी किसी भी दस्तावेज में कहीं भी नहीं देखा है: आपको इसे उदाहरणों में देखना होगा।) इसके बजाय एक नियमित अभिव्यक्ति सिंटैक्स होने के बजाय जैसे आप कई अन्य भाषाओं से आदी हो सकते हैं:
/something/
PHP स्ट्रिंग्स का उपयोग करता है, और फिर एक और सीमांकक के लिए स्ट्रिंग के अंदर दिखता है :
'/something/'
सीमांकक PHP /
वर्णों की जोड़ी के बजाय वर्णों की जोड़ी है '
। इसलिए यदि आप लिखते हैं 'something'
, तो PHP s
इच्छित सीमांकक के रूप में लेगी और शिकायत करेगी कि आपको अल्फ़ान्यूमेरिक वर्णों को अपने सीमांकक के रूप में उपयोग करने की अनुमति नहीं है।
इसलिए यदि आप (उदाहरण के लिए) पास i
करना चाहते हैं, तो यह दिखाने के लिए कि आप एक केस-इन्सेंसिटवे मैच चाहते हैं, आप इसे स्ट्रिंग के अंदर लेकिन रेगेक्स के बाहर से बाहर निकाल दें:
'/something/i'
यदि आप /
अपने सीमांकक के अलावा कुछ का उपयोग करना चाहते हैं , तो आप कर सकते हैं, जैसे कि आप एक URL का मिलान कर रहे हैं और सभी स्लैश से बचना चाहते हैं:
'~something~'
preg_match()
चर के रूप में पारित कर रहे हैं , तो सुनिश्चित करें कि आपको फ़ंक्शन कॉल में गलती से मिलाए गए चर का क्रम नहीं मिलता है क्योंकि यह भी लगभग निश्चित रूप से इसी में परिणाम देगा। त्रुटि दिखाई दे रही है।