2011-01-21 16 views
24

मुझे एक स्ट्रिंग का हिस्सा बनने के लिए बैकस्लैश की आवश्यकता है। मैं यह कैसे कर सकता हूं?आप PHP में स्ट्रिंग को बैकस्लैश के साथ कैसे बनाते हैं?

+0

* (संदर्भ) का उपयोग करना * [स्ट्रिंग्स] (http://de.php.net/manual/en/language.types। string.php) – Gordon

+0

संभावित डुप्लिकेट [क्यों "\" PHP में स्ट्रिंग में संग्रहीत करते समय त्रुटि देता है?] (http://stackoverflow.com/questions/1673186/why-gives-error-while-storing-it-in -स्ट्रिंग-इन-पीएचपी) – Bobby

उत्तर

44

एकल उद्धरण का उपयोग

$string = 'abc\def'; 

दोहरे उद्धरण चिह्नों

$string = "abc\\def"; 
+2

इस विशेष उदाहरण में बैकलैश अकेले हो सकता है। यह अभी भी बचने के लिए अच्छा अभ्यास है। लेकिन एक ही उद्धरण के लिए समान रूप से। – mario

+1

सिंगल कोट्स के लिए यह काम नहीं करेगा अगर बैकस्लैश स्ट्रिंग के अंत में है।सिंगल कोट्स में डबल बैकस्लैश का उपयोग करना सभी परिदृश्यों में काम करता है - बाद वाला उदाहरण बेहतर है, चाहे उद्धरण प्रकार क्या हो। – jskidd3

39

लघु जवाब:

उपयोग दो बैकस्लैश।

लांग जवाब:

आप कभी कभी एक एकल बैकस्लैश का उपयोग कर सकते हैं, लेकिन कभी कभी आप दो की जरूरत है। आप उपयोग कर सकते हैं जब एक भी बैकस्लैश दो बातों पर निर्भर करता है:

  • कि क्या आपके स्ट्रिंग एकल उद्धरण या डबल कोट्स और
  • चरित्र तुरंत बैकस्लैश निम्नलिखित से घिरा हुआ है।

आप एक दोहरे उद्धरण स्ट्रिंग बैकस्लैश कई मामलों में एक भागने चरित्र के रूप में व्यवहार किया जाता है है यदि ऐसा है तो यह सबसे अच्छा है हमेशा एक और बैकस्लैश के साथ बैकस्लैश से बचने के लिए:

$s = "foo\\bar" 

एक भी उद्धृत स्ट्रिंग बैकस्लैश में तब तक शाब्दिक होगा जब तक कि उनके बाद एक ही उद्धरण या कोई अन्य बैकस्लैश न हो। तो उत्पादन के लिए एक एकल उद्धृत स्ट्रिंग के साथ एक एकल बैकस्लैश आप सामान्य रूप से यह लिख सकते हैं:

$s = 'foo\bar' 

लेकिन उत्पादन के लिए दो बैकस्लैश एक पंक्ति में आप इस की जरूरत है:

$s = 'foo\\\\bar' 

आप हमेशा दो बैकस्लैश यदि आप कभी गलत नहीं होगा।

+2

+1 एकल उद्धरण –

+0

के भीतर एक एकल \ का उपयोग करते समय अपवादों का हवाला देते हुए मुझे 'if (! preg_mat' ch ('/^[\\\, .\d\pL]*$/u', $ _POST ['some_text'])) {...} 'तो बैकस्लैश से बचने के लिए मुझे 3 बैकस्लैश का उपयोग करना पड़ा \\\ । एक और दो के साथ कोशिश की, काम नहीं किया। समझ में नहीं आता क्यों 3 – user2118559

+0

@ user2118559 एकल उद्धृत स्ट्रिंग में पहले दो एक उत्पन्न करते हैं, तीसरा अकेला छोड़ दिया जाता है (एकल कोट या बैकस्लैश के बाद नहीं)। तो regexp को पारित स्ट्रिंग में दो बैकस्लाश डाले जाते हैं। फिर regexp दूसरे से बचने के लिए पहले का उपयोग करता है, जिसके परिणामस्वरूप बैकस्पेस वर्ण में एक "असली" (= वास्तव में पाठ में पाया जाता है)। आप इसके बजाय चार का उपयोग कर सकते थे (चार दो हो जाते हैं, स्ट्रिंग को पार्स करते हैं, फिर शेष दो एक बन जाते हैं, रेगेक्सपी को पार्स करते हैं) जैसा कि इस उत्तर से सही तरीके से सुझाया गया है। – FrancescoMM

4

आपको "c:\\windows\\" जैसे सभी बैकस्लैश से बचना होगा।

+0

यह एक बेहतर उदाहरण है – user3284463

संबंधित मुद्दे