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