2011-09-27 9 views
8

मैं स्ट्रिंग के अंत से ईटीएक्स चरित्र (0x03) को कैसे हटा सकता हूं? मैं या तो एक समारोह पसंद करूंगा, अन्यथा मैं एक नियमित अभिव्यक्ति लिख सकता हूं, मैं जानना चाहता हूं कि नियमित अभिव्यक्ति में ईटीएक्स चरित्र से कैसे मिलान किया जाए? trim() काम नहीं करता है।स्ट्रिंग के अंत से ईटीएक्स चरित्र को कैसे हटाया जाए? (रेगेक्स या PHP)

उत्तर

8

चार्ल्स 'जवाब पूरा करने के लिए, मैं एक केस था जहां ईटीएक्स चरित्र लाइन के अंत में नहीं था इसलिए मुझे निम्नलिखित कोड का उपयोग करना पड़ा:

$string = preg_replace('/\x03/', '', $string); 

बस $ चिह्न हटा दें।

0

एक अनुमान rtrim पर ($ वर, "\ ग") की कोशिश की है; या preg_replace ("/ \ c + \ $ /", '', $ var);

1

ETX एक नियंत्रण चरित्र है, जिसका अर्थ है कि हमें इसे अस्तित्व में लाने के लिए कुछ अतिरिक्त प्रयास करना है।

पीएचपी इंटरैक्टिव शीघ्र से:

php > $borked = "Hello, have an ETX:" . chr(3); 
php > print_r($borked); 
Hello, have an ETX: 
php > var_export($borked); 
'Hello, have an ETX:' 
php > echo urlencode($borked); 
Hello%2C+have+an+ETX%3A%03 
php > var_dump(preg_match('/' . chr(3) . '/', $borked)); 
int(1) 
php > var_dump(preg_match('/' . chr(3) . '$/', $borked)); 
int(1) 
php > echo urlencode(preg_replace('/' . chr(3) . '$/', '', $borked)); 
Hello%2C+have+an+ETX%3A 

दूसरे शब्दों में, आप मूल रूप से सिर्फ regex स्ट्रिंग में चरित्र इंजेक्षन कर सकते हैं। अब, यह बैकफायर हो सकता है। यह तकनीक चरित्र सेट और अन्य भयानक चीजों के आधार पर पीछे हट सकती है।

chr(3) के अलावा, आप चरित्र का उत्पादन करने के लिए urldecode('%03') भी कोशिश कर सकते हैं। तुम भी PCRE syntax pages पर सूचीबद्ध के रूप में, एक विशेष भागने सिंटैक्स का उपयोग कर सकते हैं: /\x03$/

यहाँ आप के लिए एक समारोह है, कि पिछले विधि का उपयोग कर:

function strip_etx_at_end_of_string($string) { 
    return preg_replace('/\x03$/', '', $string); 
} 
संबंधित मुद्दे