2012-05-06 15 views
6

से नंबर मिल मैं इस स्ट्रिंगphp एक स्ट्रिंग

है @ [123: peterwateber] नमस्ते वहाँ 095032sdfsdf! @ [589: ZZZZ]

मैं 123 और 589 प्राप्त करना चाहते हैं कि कैसे आप रेगुलर एक्सप्रेशन या PHP में कुछ का उपयोग कर कि क्या ज़रूरत है?

नोट: पीटरवेटर और ज़ज्ज़ बस उदाहरण हैं। किसी भी यादृच्छिक स्ट्रिंग

उत्तर

6

अग्रदर्शी मत भूलना ताकि आप 095032 मेल नहीं खाते:

$foo = '@[123:peterwateber] hello there 095032sdfsdf! @[589:zzzz]'; 
preg_match_all("/[0-9]+(?=:)/", $foo, $matches); 
var_dump($matches[0]); // array(2) { [0]=> string(3) "123" [1]=> string(3) "589" } 
+0

यह सबसे अच्छा जवाब धन्यवाद दोस्त है! –

+0

मदद करने के लिए खुशी :) – AlienWebguy

2

निम्नलिखित regex एक पंक्ति में एक या अधिक संख्यात्मक वर्ण निकाल देंगे विचार किया जाना चाहिए:

preg_match_all('#\d+#', $subject, $results); 
print_r($results); 
1

एक समारोह preg_match_all

पहले पैरामीटर कहा जाता है एक रेगुलर एक्सप्रेशन को स्वीकार करता है - निम्नलिखित उदाहरण दिखाता है 'कम से कम एक अंक से मेल खाता है, इसके बाद किसी भी संख्या में अंक होते हैं। यह संख्याओं से मेल खाएगा।

दूसरा परम स्वयं स्ट्रिंग, विषय है जहाँ से आप चाहते हैं निष्कर्षण

तीसरे एक सरणी जिसमें सभी मिलान तत्वों बैठेंगे है। तो पहला तत्व 123 हो जाएगा, दूसरा 589 हो जाएगा और इतने पर

preg_match_all("/[0-9]+/", $string, $matches); 
+0

हे .. मैं में उल्लेख करना भूल गया मेरी स्ट्रिंग में संख्या प्राप्त करने में मेरी प्राथमिकता पोस्ट करें जब "@ [123: यहां कुछ पाठ]" पाया जाता है –

+0

मुझे खेद है कि मुझे वह नहीं मिला। क्या आप थोड़ा और स्पष्ट हो सकते हैं? क्या आप संख्याओं को मुद्रित करना चाहते हैं? –

+0

"@ [123: पीटरवेटबर]" preg_match_all आधारित होना चाहिए। यदि स्ट्रिंग है "हैलो निखिल @ [123: पीटरवेटबर] इसकी 6 वीं मई" आउटपुट "123" होनी चाहिए जब preg_match_all। इसलिए, 123 स्ट्रिंग में प्राप्त होना चाहिए जिसमें निम्न मान है "@ [संख्या: स्ट्रिंग]" –