PHP स्ट्रिंग्स से नियंत्रण वर्णों को अलग करना
प्रश्न: नियंत्रण वर्ण हटाने के लिए नियमित अभिव्यक्ति को संशोधित करना
एक PHP डेवलपर ने पहले STX जैसे नियंत्रण वर्णों को शुद्ध करने के लिए निम्नलिखित अभिव्यक्ति को नियोजित किया था स्ट्रिंग:
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
हालाँकि, परिणाम अत्यधिक प्रतिबंधात्मक था, जिससे यह प्रश्न उठा: वर्णों को चयनात्मक रूप से कैसे नियंत्रित किया जा सकता है हटाया गया?
ए: नियंत्रण चरित्र पहचान के लिए विशिष्ट चरित्र वर्गों का उपयोग
नियंत्रण वर्णों को सटीक रूप से लक्षित करने के लिए, एक अधिक विशिष्ट चरित्र वर्ग का उपयोग किया जा सकता है:
preg_replace('/[\x00-\x1F\x7F]/', '', $input);
यह अभिव्यक्ति मेल खाती है \x00-\x1F और \x7F की सीमा के भीतर ASCII कोड वाले अक्षर, जिसमें पहले 32 अक्षर और \x7F शामिल हैं, जिसमें कैरिज रिटर्न जैसे अक्षर शामिल हैं।
लाइन ब्रेक जैसे आवश्यक वर्णों को संरक्षित करना
यदि विशिष्ट वर्ण, जैसे लाइन फ़ीड या कैरिज रिटर्न, को संरक्षित करने की आवश्यकता है, तो उनके भागने के अनुक्रम हो सकते हैं बहिष्कृत:
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);
इस संशोधित अभिव्यक्ति में , \x0A (लाइन फ़ीड) और \x0D (कैरिज रिटर्न) को वर्ण से बाहर रखा गया है class.
आधुनिक सिंटेक्स और बहिष्करण
यह ध्यान रखना महत्वपूर्ण है कि PHP 5.3.0 में ereg_replace का बहिष्करण और PHP 7.0.0 में इसके बाद के निष्कासन को अनिवार्य किया गया है ereg_replace पर preg_replace का उपयोग।
अंत में, नियंत्रण के लिए एक कैरेक्टर क्लास अक्षर
एक संक्षिप्त और पोर्टेबल विकल्प के लिए, चरित्र वर्ग [:cntrl:] को नियोजित किया जा सकता है:
preg_replace('/[[:cntrl:]]/', '', $input);
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3