यह उत्तर पूरी तरह से सचमुच प्रश्न लेता है: यह केवल रिक्त स्थान और टैब से संबंधित है। दी, ओपी शायद भी क्या छंटनी/संकुचित हो जाता है में खाली स्थान के अन्य प्रकार शामिल हैं, लेकिन के वह एम्बेडेड सीआर और/या वामो संरक्षित करने के लिए चाहता है नाटक जाने के लिए चाहता है।
सबसे पहले, चलिए कुछ स्थिरांक स्थापित करते हैं। यह समझ और रखरखाव की आसानी दोनों की अनुमति देगा, संशोधनों को आवश्यक होना चाहिए। मैंने कुछ अतिरिक्त रिक्त स्थान डाले ताकि आप समानताएं और मतभेदों की तुलना आसानी से कर सकें।
define('S', '[ \t]+' ); # Stuff you want to compress; in this case ONLY spaces/tabs
define('L', '/\A'.S.'/' ); # stuff on the Left edge will be trimmed
define('M', '/'.S.'/' ); # stuff in the Middle will be compressed
define('R', '/'.S.'\Z/'); # stuff on the Right edge will be trimmed
define('T', ' ' ); # what we want the stuff compressed To
हम \A
और \Z
escape characters उपयोग कर रहे हैं शुरुआत है और इस विषय के अंत निर्दिष्ट करने के लिए, ठेठ ^
और $
जो लाइन उन्मुख meta-characters हैं के बजाय। यह इतना नहीं है क्योंकि इस उदाहरण में उन्हें "रक्षात्मक" प्रोग्रामिंग के रूप में आवश्यक है, तो भविष्य में उन्हें आवश्यक बनाने के लिए S
का मूल्य बदलना चाहिए।
अब गुप्त सॉस के लिए: हम preg_replace की कुछ विशेष अर्थ विज्ञान का लाभ लेने के लिए जा रहे हैं, अर्थात् (जोर जोड़ा)
अगर वहाँ प्रतिस्थापन में कम तत्वों सरणी की तुलना में कर रहे हैं पैटर्न सरणी, किसी भी अतिरिक्त पैटर्न को एक खाली स्ट्रिंग द्वारा प्रतिस्थापित किया जाएगा।
function trim_press($data){
return preg_replace([ M, L, R ], [ T ], $data);
}
बजाय का एक पैटर्न स्ट्रिंग और प्रतिस्थापन स्ट्रिंग, हम एक पैटर्न सरणी और प्रतिस्थापन सरणी, जो अतिरिक्त पैटर्न L
और R
छंटनी की जा रही में परिणाम का उपयोग कर रहे हैं।
आप परवाह किए बिना पट्टी * सभी * टैब कोशिश कर रहे हैं या आप स्वरूपण बनाए रखने के स्तंभ के लिए किसी भी इच्छा है? – Synetech
मुझे लगता है कि आपको उत्तरों का दोबारा मूल्यांकन करना चाहिए और एक अलग स्वीकार करना चाहिए। – Jeff