2011-01-09 13 views
6

मुझे नियमित अभिव्यक्तियों से नफरत है और मैं उम्मीद कर रहा था कि कोई व्यक्ति preg_replace के साथ उपयोग करने के लिए एक नियमित अभिव्यक्ति के साथ मदद कर सकता है।preg_replace - स्ट्रिंग से अनचाहे वर्णों को संख्यात्मक मान वापस करने के लिए स्ट्रिप करें

मैं अवांछित characers को स्ट्रिंग से स्ट्रिप करना चाहता हूं ताकि preg_replace का उपयोग करके केवल एक संख्यात्मक मान लौटा सकें।

कुछ पाठ £ 100

£ 100 कुछ पाठ

कुछ पाठ 100 कुछ पाठ

बहुत धन्यवाद

+1

तो ये सभी उपज 100, सही है? '1abc00' के साथ क्या होता है? – BoltClock

+1

अभी तक बेहतर - '£ 1.00' के बारे में क्या? – Kobi

उत्तर

16
$NumericVal = preg_replace("/[^0-9]/","",$TextVariable); 

^अंदर [] निम्नलिखित

संपादित ज़रूरत से ज़्यादा हटाया अलावा कुछ मतलब है +

+1

बहुत कुशल, उत्कृष्ट उत्तर –

+0

क्यों जिज्ञासा से '\ D' का उपयोग नहीं करते ...? वेब पर कई सवालों के जवाब नहीं बल्कि निर्मित "नहीं अंकों" – nicorellius

+0

@nicorellius मैंने लिखा से गैर नंबर का उपयोग यह असली जल्दी जब मैं जवाब तो वास्तव में यह सब है उपयोग करने के लिए नहीं लगता था, और के बाद से इसके बारे में नहीं सोचा इसका उपयोग करने के लिए इसे संपादित करें \ d। हालांकि यह विभिन्न रेगेक्स विकल्पों के अच्छे ज्ञान के बिना लोगों के लिए अधिक पठनीय है। –

0
preg_replace('/[^0-9]/','',$text); 
+0

यह बोल्टक्लॉक के उदाहरण के लिए '100' भी देता है। – AndreKR

+0

आपको + की आवश्यकता है अन्यथा यह केवल पहले गैर-संख्या –

+1

संख्या को प्रतिस्थापित करेगा, जो 'preg_match' के लिए आंशिक रूप से सत्य है लेकिन 'preg_replace' के लिए नहीं है। किसी भी सामान्य प्रतिस्थापन की तरह 'preg_replace' किसी चरित्र के प्रत्येक अवसर को प्रतिस्थापित करता है जो' [^ 0-9] 'कुछ भी नहीं है और फिर अगले चरित्र के साथ इसकी खोज जारी रखता है। – AndreKR

0

:

स्ट्रिंग प्रारूप इस प्रकार हो सकता है इसे आज़माएं:

preg_replace("/\D+/", "", "SOME TEXT £100") 

तुम भी preg_match उपयोग कर सकते हैं पहले नंबर प्राप्त करने के लिए:

preg_match("/\d+/", "SOME TEXT £100", $matches); 
$number = $matches[0]; 
8
$l = preg_replace("/[^A-Z0-9a-z\w ]/u", '', $l); 

काम करता है चुड़ैल यूटीएफ -8, केवल ए-जेड ए-जे 0-9 łwóc ... आदि

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