2013-05-24 8 views
7

मैं एक स्ट्रिंग के भीतर से अतिरिक्त सफेद जगहों को हटाने का एक तरीका ढूंढ रहा था (यानी, यदि 2 या अधिक रिक्त स्थान एक-दूसरे के आगे हैं, तो केवल 1 छोड़ें और दूसरों को हटा दें), i इस Remove excess whitespace from within a string मिल गया है और मैं इस समाधान का उपयोग करना चाहता था:PHP - अतिरिक्त व्हाइटस्पेस निकालें लेकिन नई लाइनें

$foo = preg_replace('/\s+/', ' ', $foo); 

लेकिन इस नई लाइनों में अच्छी तरह से निकाल देता है, जबकि मैं उन्हें रखना चाहते हैं। अतिरिक्त व्हाइटस्पेस को हटाते समय न्यूलाइन रखने का कोई तरीका है?

+0

किसी स्थान के साथ '\ s' को बदलें? यदि आप टैब को भी हटाना चाहते हैं तो '/ [\ t] +/' – HamZa

उत्तर

19

http://www.php.net/manual/en/regexp.reference.escape.php \h any horizontal whitespace character (since PHP 5.2.4) को परिभाषित करता है तो शायद आप देख रहे हैं

$foo = preg_replace('/\h+/', ' ', $foo);

उदाहरण: http://ideone.com/NcOiKW

+0

का उपयोग करें जो –

+0

सही नहीं है, यह सही क्यों नहीं है? – test30

+1

मुझे लगता है कि यह गलत है क्योंकि मेरे लिए यह सभी सफेद जगह हटा दी गई है :) –

4

आप केवल-रिक्त स्थान (टैब नहीं, नई लाइनों, आदि के अतिरिक्त निकालना चाहते हैं) आप अधिक विशिष्ट होने के लिए हेक्स कोड का उपयोग कर सकते हैं:

$text = preg_replace('/\x20+/', ' ', $text); 
+0

वहां बहुत से स्पेस वर्ण हैं जो ASCII 32 ('x x'') स्पेस नहीं हैं। – Piskvor

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