2012-03-03 16 views
6

POSIX वर्ण वर्गों का उपयोगPHP मिलान नियंत्रण अक्षर लेकिन सफेद जगह नहीं?

मिलान कैसे करें [: ​​cntrl:] लेकिन [: space:] को छोड़कर?

$message = ereg_replace("[[:cntrl:]]", "", $message); 
+1

"असुरक्षित पात्रों" को परिभाषित –

+1

परिभाषित "पलायन" –

+0

मैं सवाल को अद्यतन किया है, धन्यवाद। – Howard

उत्तर

5

ereg_ * (POSIX) फ़ंक्शंस अब लंबे समय से बहिष्कृत किए गए हैं। इन तरीकों का उपयोग करके आपको contiue नहीं करना चाहिए।

POSIX Bracket Expressions[:cntrl:] के अनुसार ASCII रेंज [\x00-\x1F\x7F] (या यूनिकोड \p{Cc}) और [:space:][ \t\r\n\v\f] ले कर जाता है करने के लिए हल करता है। उन वर्णों को हल करने के लिए asciitable.com का उपयोग करके, आपको [\x20\x09-\x0D] की बहिष्करण सूची के साथ छोड़ दिया गया है। "गणित करना" आपको [\x00-\x08\x0E-\x1F\x7F] के साथ छोड़ दिया गया है।

$message = preg_replace('/[\x00-\x08\x0E-\x1F\x7F]+/', '', $message); 

ध्यान दें कि VT (कार्यक्षेत्र टैब) और FF (फॉर्म फ़ीड, न्यू पेज) भी संरक्षित कर रहे हैं: और निम्न, पीएचपी 5.3 और ऊपर संगत है, सफ़ाई के साथ छोड़ देता है। भी अपनी स्थिति के आधार पर आप हो सकता है इन निकालना चाहते हैं:

$message = preg_replace('/[\x00-\x08\x0E-\x1F\x7F\x0A\x0C]+/', '', $message); 
0

[[:cntrl:]] मूल रूप से है [\x00-\x1f\x7F] और [[:space:]][ \t\r\n\v\f](ref) के बराबर है, इतने लंबे समय के हाथ विधि [\x00-\x08\x0E-\x1F\7F] उपयोग करने के लिए होगा (अंतरिक्ष 0x20 है और cntrl सीमा से बाहर, \t\r\n\v\f \ x0D को x09 हैं \)

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