मुझे पता है कि यह सवाल थोड़ा पुराना है, लेकिन मुझे एक ही समस्या का जवाब खोजने की कोशिश करते हुए यह मिला। मैंने देखा कि यह खोज इंजन रैंकिंग के शीर्ष पर था, इसलिए मुझे लगा कि यह एक साधारण विकल्प की व्याख्या करना अच्छा होगा, और यह दोहरा उद्धृत तारों के साथ क्यों होता है (")
नियमित अभिव्यक्ति का उपयोग मैं अकेले अकेले था उद्धरण वर्ण (')
इसमें, इसलिए मैं उनके साथ अभिव्यक्ति को लपेटने के लिए बहुत उत्सुक नहीं था, क्योंकि मैं उन सभी से बचना नहीं चाहता था।
मेरे समाधान "डबल बच" डॉलर साइन किया गया था। अपने उदाहरण में, यह करने के लिए
"/Regular Price: \\\$(\d+\.\d{2}).*Final Price: \\\$(\d+\.\d{2})/U";
ध्यान दें कि डॉलर साइन 3 स्लैश अब \\\
शामिल कुछ इसी तरह दिखना चाहिए।
असल में, हम व्याख्या के दो "स्तर", पीएचपी की है कि, और regex अभिव्यक्ति की है कि है। क्या हो रहा है कि एक स्लैश के साथ, PHP इसे परिवर्तनीय संशोधक के बजाय एक शाब्दिक चरित्र के रूप में व्याख्या करता है, इसलिए यह स्लैश खाता है, स्ट्रिंग को मार्क के उत्तर में उल्लिखित स्ट्रिंग का अर्थ देता है, और उसके बाद उसे रेगेक्स भेजता है, जो एक लुक-बैक के रूप में व्याख्या करता है।
डॉलर के हस्ताक्षर से "डबल से बचने" के द्वारा, PHP \\\$
को \\
और \$
क्रमशः व्याख्या करता है। हम पात्रों के पहले सेट से \
बचने, और दूसरा सेट से $
बचने, पीएचपी व्याख्या के बाद सिर्फ \$
हो जाती है। यह शाब्दिक स्ट्रिंग
"/Regular Price: \$(\d+\.\d{2}).*Final Price: \$(\d+\.\d{2})/U";
regex को
है, जो चरित्र शाब्दिक $
, जो बजाय पीछे एक नज़र के रूप में अभिनय के $
से मेल खाएगा, क्योंकि यह बच रहा है के रूप में \$
व्याख्या करेगा भेज देंगे।यहां व्याख्या की दोहरी परतों को समझना महत्वपूर्ण है, क्योंकि PHP और regex दोनों में स्वयं की व्याख्या नियम हैं, और वर्णों से सही ढंग से बचने में 4 स्लैश लग सकते हैं।
एकल उद्धरण तार इस समस्या नहीं है, के बाद से एक स्ट्रिंग में एक चर $foo
उपयोग करने के लिए, हम
'Hello '. $foo .'!';
बजाय
"Hello $foo!";
लिखने के लिए होता है हम डबल में कर सकते हैं जैसा तार। डबल उद्धृत तारों के विपरीत, सिंगल कोट स्ट्रिंग स्ट्रिंग के अंदर चर के रूप में चर के रूप में व्याख्या नहीं कर सकते हैं (जब तक कि वे ऊपर उदाहरण में शामिल नहीं होते हैं), बजाय उन्हें सादे पाठ के रूप में व्याख्या करते हैं। जब से हम अब और चर से बचने के लिए की जरूरत नहीं है, हम एक दोहरे उद्धरण स्ट्रिंग में regex के लिए, \\\$
साथ के रूप में ही बस
'/Regular Price: \$(\d+\.\d{2}).*Final Price: \$(\d+\.\d{2})/U'
जो भेज देंगे \$
के साथ भाग प्राप्त कर सकते हैं।
यह व्यक्तिगत पसंद जो शैली पर आप का उपयोग करें, या जो पैटर्न के लिए आसान है के सभी बात है।
टी एल; डॉ: "/Hello \\\$bob/is"
की तरह डबल उद्धृत स्ट्रिंग्स के लिए '/Hello \$bob/is'
, और \\\$
की तरह एकल उद्धृत स्ट्रिंग्स के लिए उपयोग \$
।
डॉलर चिह्न पर \\\ साथ भागने की कोशिश करो। समस्या डॉलर के संकेत और तथ्य यह है कि PHP कुछ काम करने के लिए $ का उपयोग करता है, के बीच संबंधों का अनुमान लगाना ठीक हो सकता है। (मैं काम करने के लिए भी $ का उपयोग करता हूं, यह केवल तार्किक लगता है)। –
क्या आपने $ से बचने के बिना सिंगल कोट्स की कोशिश की है? – palindrom