2010-11-29 9 views
14

मैं इस तरह एक स्ट्रिंग से अतिरिक्त सफेद स्थान को निकालना कोशिश कर रहा हूँ:php को हटाने के अतिरिक्त खाली स्थान के

हैलो             दुनिया

हैलो दुनिया को

किसी को भी कोई विचार है कि PHP में ऐसा कैसे करें?

उत्तर

28

एक regexp के साथ:

preg_replace('/()+/', ' ', $string); 

आप भी हर बहु ​​सफेद अक्षर निकालना चाहते हैं, तो आप उपयोग कर सकते हैं \ रों

preg_replace('/(\s)+/', ' ', $string); 
+2

आपके regexes में कोष्ठक आवश्यक नहीं हैं। – alex

4
$str = 'Why do I 
      have so much white space?'; 

$str = preg_replace('/\s{2,}/', ' ', $str); 

var_dump($str); // string(34) "Why do I have so much white space?" 

See it! (\ s सफेद अक्षर है)

आप + क्वांटिफायर का भी उपयोग कर सकते हैं, क्योंकि यह हमेशा आर इसे के साथ बदल देता है। हालांकि, मुझे आपके इरादे को स्पष्ट दिखाने के लिए {2,} मिल गया है।

+0

इसे आजमाया लेकिन शुरुआत में या पाठ के अंत में रिक्त स्थान को नहीं हटाया। यदि स्ट्रिंग '$ str = 'बहुत सारी जगहों के साथ टेक्स्ट' है; ', यह' 'कई रिक्त स्थान वाले टेक्स्ट' को वापस लौटाता है। मैं 'बहुत सारी जगहों के साथ पाठ' की उम्मीद करता हूं। – Mai

+0

@ माई ऐसा इसलिए है क्योंकि कोड रिक्त स्थान को नहीं हटाता है, यह उन्हें एक में गिर जाता है। यदि आप स्ट्रिंग को ट्रिम करना चाहते हैं, तो 'trim() 'का उपयोग करें। – alex

0

कैसे preg_replace प्रलेखन

+0

उदाहरण में '\ s \ s +' है। क्यूं कर? मैं समझ सकता हूं कि क्या वे प्लस के बजाय तारांकन का इस्तेमाल करते हैं। एक तारांकन का मतलब शून्य या अधिक घटनाएं होती है। इसलिए, आपको रेगेक्स को दोगुना करना होगा। हालांकि, एक प्लस का मतलब एक या अधिक है। क्या कोई विशेष कारण है? यह अभी भी काम करना चाहिए, लेकिन यह अनावश्यक लगता है। –

+1

डब्ल्यू। मुझे लगता है कि इसे केवल 2 या अधिक रिक्त स्थान पर मिलान करना है - यदि केवल एक ही स्थान है, तो प्रतिस्थापन करने की आवश्यकता नहीं है। यह आकस्मिक रूप से, एलेक्स के उत्तर में '\ s {2,} 'के बराबर है। –

0

नहीं एक PHP विशेषज्ञ में अतिरिक्त खाली स्थान के पट्टी पर एक उदाहरण है, लेकिन REGEX के लिए एक नौकरी की तरह अपने आवाज़ ....

<?php 
$string = 'Hello  World  and Everybody!'; 
$pattern = '/\s+/g'; 
$replacement = ' '; 
echo preg_replace($pattern, $replacement, $string); 
?> 

फिर, पीएचपी है मेरी भाषा नहीं, लेकिन विचार एक ही रिक्त स्थान के साथ एकाधिक सफेद जगहों को प्रतिस्थापित करना है। \s सफेद स्थान के लिए खड़ा है, और + का मतलब है एक या अधिक। अंत में g का अर्थ वैश्विक स्तर पर करना है (यानी एक से अधिक बार)।

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