नोट: निम्नलिखित एक सामान्य जवाब में किया जाता है और के रूप में यह पहले से ही किया गया है addressed before ओपी की विशिष्ट समस्या को हल करने का प्रयास नहीं करता ।
preg_replace_callback()
क्या है?
यह फ़ंक्शन नियमित अभिव्यक्ति खोज-और-प्रतिस्थापन करने के लिए उपयोग किया जाता है। यह str_replace()
के समान है, लेकिन सादे तारों के बजाय, यह उपयोगकर्ता द्वारा परिभाषित रेगेक्स पैटर्न की खोज करता है, और उसके बाद मिलान किए गए आइटम पर कॉलबैक फ़ंक्शन लागू करता है। यदि मिलान मिलते हैं, तो असम्बद्ध स्ट्रिंग अन्यथा संशोधित स्ट्रिंग देता है।
मुझे इसका उपयोग कब करना चाहिए?
preg_replace_callback()
बहुत preg_replace()
के समान है - फर्क सिर्फ इतना है कि बजाय दूसरा पैरामीटर के लिए एक स्थानापन्न स्ट्रिंग को निर्दिष्ट करने के लिए, आप एक callback
समारोह निर्दिष्ट है।
जब आप एक साधारण रेगेक्स खोज और प्रतिस्थापन करना चाहते हैं तो preg_replace()
का उपयोग करें। जब आप बस प्रतिस्थापन से अधिक करना चाहते हैं तो preg_replace_callback()
का उपयोग करें। यह कैसे काम करता है यह समझने के लिए नीचे दिया गया उदाहरण देखें।
इसका उपयोग कैसे करें?
फ़ंक्शन के उपयोग को चित्रित करने के लिए यहां एक उदाहरण दिया गया है। यहां, हम YYYY-MM-DD
प्रारूप से DD-MM-YYYY
पर दिनांक स्ट्रिंग को बदलने की कोशिश कर रहे हैं।
// our date string
$string = '2014-02-22';
// search pattern
$pattern = '~(\d{4})-(\d{2})-(\d{2})~';
// the function call
$result = preg_replace_callback($pattern, 'callback', $string);
// the callback function
function callback ($matches) {
print_r($matches);
return $matches[3].'-'.$matches[2].'-'.$matches[1];
}
echo $result;
यहाँ, हमारे रेगुलर एक्सप्रेशन पैटर्न प्रारूप NNNN-NN-NN
की तारीख स्ट्रिंग के लिए खोज करता है, जहां N
लेकर 0
से अंक के हो सकता है - 9
(\d
चरित्र वर्ग [0-9]
के लिए एक आशुलिपि प्रतिनिधित्व है)। कॉलबैक फ़ंक्शन को दिए गए स्ट्रिंग में मिलान किए गए तत्वों की एक सरणी कहा जाएगा और पास किया जाएगा।
अंतिम परिणाम हो जाएगा:
22-02-2014
नोट: ऊपर के उदाहरण चित्रण प्रयोजनों के लिए ही है। आप को पार्स तिथियों के लिए उपयोग नहीं करना चाहिए। इसके बजाय DateTime::createFromFormat()
और DateTime::format()
का उपयोग करें। This question में अधिक जानकारी है।
स्रोत
2014-02-07 15:02:45
आप विषय के साथ '$ in'' कैसे प्राप्त कर सकते हैं? –
@ शेखहेरा वह पहले से ही होना चाहिए। डेटा आमतौर पर कहां जाता है और बाहर आता है यह दिखाने के लिए मैं आमतौर पर '$ in' और' $ out' का उपयोग करता हूं। –
अच्छा जवाब, वैसे भी। –