2011-06-14 15 views
6

मैं इस कोड कोशिश कर रहा हूँ के साथ अल्पविराम (,) बदलें, लेकिन मैं इस त्रुटि मिलती है (।): No ending delimiter '/' foundडॉट रेगुलर एक्सप्रेशन से php

$form = " 2000,50"; 
$salary = preg_replace('/',', '.'/', $form); // No ending delimiter '/' found 
echo $salary; 

मैं regex मान्यता के बारे में निश्चित नहीं हूँ।

+4

आपको इसके लिए रेगेक्स क्यों चाहिए? वास्तव में – BoltClock

उत्तर

52

रेगेक्स केवल एक ही चरित्र को बदलने के लिए ओवरकिल है। इसके बजाए ऐसा क्यों न करें?

str_replace(',', '.', $form); 
+2

। एक स्क्रू ड्राइवर पर्याप्त होने पर 12 हजार अनुलग्नकों के साथ पावर ड्रिल का उपयोग क्यों करें? –

+1

@ मिडास: यह एसओ पर अपरिवर्तनीय मात्रा में अपरिवर्तनीय मात्रा प्राप्त करने के मूलभूत उत्तरों के लिए एक प्रवृत्ति प्रतीत होता है। http://stackoverflow.com/questions/4080265/what-does-this-css-do/4080268#4080268 और मेरे अधिकांश शीर्ष उत्तरों उदाहरण हैं। – BoltClock

+0

इस उदाहरण में, str_replace() preg_replace() से 4 गुना अधिक तेज करता है, इसलिए str_replace() स्पष्ट रूप से सबसे अच्छा विकल्प है। –

5
$salary = preg_replace('/,/', '.', $form); 

उपयोग कर सकते हैं लेकिन हाँ, आप नहीं वास्तव में एक पैटर्न लेकिन एक स्ट्रिंग जो निरंतर है मिलान करने के लिए है, तो बस str_replace() का उपयोग करना चाहते हैं।

0

आपकी स्ट्रिंग में '/' को स्टार्ट-ऑफ-रेगेक्स डेलीमीटर के रूप में उपयोग किया जाता है, इसलिए आपको इसे से बचने की आवश्यकता है। सही रेखा को पढ़ना चाहिए:

$salary = preg_replace('\\/',', '.'/', $form); 

मैं भी उत्सुक हूं कि दूसरा param 'क्यों' है। '/' बजाय ', /'।

संपादित

आह मैं अब देखते हैं, लाइन पढ़ना चाहिए:

$salary = preg_replace('/,/', '.', $form); 

क्योंकि आपके उदाहरण में पहली अल्पविराम एक होना चाहिए मैं उलझन में था '।' स्ट्रिंग को संगत करने के लिए।

1

मुझे आपके पैरामीटर नहीं समझते हैं - मुझे यकीन नहीं है कि स्ट्रिंग में क्या होना चाहिए और क्या नहीं है। लेकिन preg_replace के लिए, खोज पैटर्न एक स्ट्रिंग होना चाहिए, और स्ट्रिंग भी एक डेलीमीटर (आमतौर पर '/') के साथ शुरू होती है और समाप्त होती है। मुझे लगता है कि यह खोज स्ट्रिंग के चारों ओर स्लैश की आवश्यकता है जब यह पहले से ही स्ट्रिंग के अंदर है, लेकिन यह काम करता है।

दूसरा पैरामीटर एक स्ट्रिंग होना चाहिए जिसमें पूर्ण स्टॉप और कुछ भी नहीं है। यह देता है:

$ वेतन = preg_replace ('/, /', '।', $ फॉर्म);

अन्य लोग सही हैं कि str_replace एक चरित्र को दूसरे में बदलने के लिए ठीक होगा, लेकिन अगर आप चाहते हैं कि प्रतिस्थापन अधिक जटिल हो जाता है preg_replace उचित होगा।

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