"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मैं रेगुलर एक्सप्रेशन का उपयोग करके स्ट्रिंग प्लेसहोल्डर प्रतिस्थापन को कैसे अनुकूलित कर सकता हूं?

मैं रेगुलर एक्सप्रेशन का उपयोग करके स्ट्रिंग प्लेसहोल्डर प्रतिस्थापन को कैसे अनुकूलित कर सकता हूं?

2024-12-14 को प्रकाशित
ब्राउज़ करें:808

How Can I Optimize String Placeholder Substitution Using Regular Expressions?

RegEx के साथ स्ट्रिंग प्लेसहोल्डर प्रतिस्थापन को अनुकूलित करना

फ़ंक्शन dynStr() का उद्देश्य किसी दिए गए स्ट्रिंग में प्लेसहोल्डर वेरिएबल्स को खोजना और बदलना है, जो द्वारा दर्शाया गया है मध्यम कोष्ठक। हालांकि यह सही ढंग से कार्य करता है, इसकी दक्षता और सरलता में सुधार किया जा सकता है।

dynStr() के साथ एक प्रमुख मुद्दा $matches के लिए इसकी डबल-सरणी संरचना में निहित है। वांछित डेटा तक पहुँचने के लिए दो फ़ोरैच लूप का उपयोग करना अक्षम है। आगे की प्रक्रिया की आवश्यकता के बिना प्लेसहोल्डर वेरिएबल को सीधे निकालने के लिए नियमित अभिव्यक्ति को सरल बनाने पर विचार करें:

preg_match_all('/{\w }/', $str, $matches);

अगला, प्लेसहोल्डर वेरिएबल्स को बदलने के लिए लूप को अनुकूलित किया जा सकता है। वर्तमान दृष्टिकोण कई स्ट्रिंग हेरफेर संचालन और सरणी लुकअप का उपयोग करता है, जिससे यह अनावश्यक रूप से जटिल हो जाता है:

foreach($match_group as $match) {
    // ...
    $str = ...
}

एक सरल और अधिक संक्षिप्त विकल्प प्लेसहोल्डर को सीधे प्रतिस्थापित करते हुए एकल फ़ंक्शन कॉल का उपयोग करना है:

foreach($matches[0] as $match) {
    $str = strtr($str, [$match => $vars[strtolower($match)]]);
}

strtr() फ़ंक्शन प्लेसहोल्डर वेरिएबल्स और $vars सरणी में उनके संबंधित मानों के बीच मैपिंग को परिभाषित करके कुशलतापूर्वक कई प्रतिस्थापन करता है।

इसके अतिरिक्त, फ़ंक्शन को केस-असंवेदनशील बनाया जा सकता है प्लेसहोल्डर वेरिएबल्स और एरे कुंजियों दोनों को लोअरकेस में परिवर्तित करके, अतिरिक्त प्रसंस्करण की आवश्यकता को समाप्त कर दिया गया है:

$allowed = array_keys(array_change_key_case($vars, CASE_LOWER));
...
$str = (in_array(strtolower($match), $allowed)) ? str_replace("{".$match_up."}", $vars[strtolower($match)], $str) : str_replace("{".$match_up."}", '', $str);

इन अनुकूलन को शामिल करने से अधिक कुशल और सुव्यवस्थित dynStr() फ़ंक्शन प्राप्त होता है:

function dynStr($str,$vars) {
    preg_match_all('/{\w }/', $str, $matches);
    foreach($matches[0] as $match) {
        $vars = array_change_key_case($vars, CASE_LOWER);
        $str = strtr($str, [$match => $vars[strtolower($match)]]);
    }
    return $str;
}
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3