दिलचस्प पोस्ट
x माइल त्रिज्या में अन्य पंक्तियों के लिए mySQL देशांतर और अक्षांश क्वेरी क्रोम डेवलपर टूल में जावास्क्रिप्ट को अक्षम कैसे करें जावा यादृच्छिक हमेशा जब मैं बीज सेट एक ही नंबर देता है? PHP और mySQL: वर्ष 2038 बग: यह क्या है? इसे कैसे हल करें? AngularJS में देखने / आंशिक विशिष्ट स्टाइल को कैसे शामिल करें शब्दकोशों में आदेश और मनमाना क्यों सेट है? मैं एक सूची में दो सूचियों को कैसे मर्ज कर सकता हूं? Google चेतावनी: संसाधन को फ़ॉन्ट के रूप में व्याख्या की गई, लेकिन माइम प्रकार के आवेदन / ऑक्टेट-स्ट्रीम के साथ स्थानांतरित किया गया क्यों Facebook पृष्ठ उपज को पोस्ट करता है "उपयोगकर्ता ने एप्लिकेशन को अधिकृत नहीं किया" मौजूदा सरणी से उप-सरणी प्राप्त करना स्टोरीबोर्ड में टेबल हैडर दृश्य गतिशील (सी # 4) और var के बीच अंतर क्या है? यूनिक्स / लिनक्स आईपीसी की तुलना करना जावास्क्रिप्ट का उपयोग करते हुए नई लाइनों वाले एक JSON स्ट्रिंग से बचने के लिए कैसे? मेल मल्टीपार्ट / वैकल्पिक बनाम मल्टीपार्ट / मिश्रित

एकाधिक सफेद स्थान निकालें

मैं $row['message'] को एक MySQL डाटाबेस से प्राप्त कर रहा हूं और मुझे सभी श्वेत स्थान जैसे \n \t और इतने पर निकालना होगा।

 $row['message'] = "This is a Text \n and so on \t Text text."; 

को फ़ॉर्मेट किया जाना चाहिए:

 $row['message'] = 'This is a Text and so on Text text.'; 

मैंने कोशिश की:

  $ro = preg_replace('/\s\s+/', ' ',$row['message']); echo $ro; 

लेकिन यह \n या \t हटा नहीं करता \t , केवल एकल स्थान क्या कोई मुझे बता सकता है कि कैसे करना है?

वेब के समाधान से एकत्रित समाधान "एकाधिक सफेद स्थान निकालें"

आप की जरूरत है:

 $ro = preg_replace('/\s+/', ' ',$row['message']); 

आप \s\s+ का उपयोग कर रहे हैं जिसका मतलब है कि एक या अधिक श्वेत स्थान के बाद श्वेत स्थान (स्थान, टैब या नई लाइन) जिसका प्रभावी ढंग से मतलब है कि एक स्थान के साथ दो या अधिक सफेद स्थान का स्थान लेना चाहिए।

आप जो चाहते हैं, एक या अधिक सफेद स्थान को एकल व्हाइटपसस के साथ बदल दें, ताकि आप पैटर्न \s\s* या \s+ (अनुशंसित) का उपयोग कर सकते हैं

 <?php $str = "This is a string with spaces, tabs and newlines present"; $stripped = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $str); echo $str; echo "\n---\n"; echo "$stripped"; ?> 

यह आउटपुट

 This is a string with spaces, tabs and newlines present --- This is a string with spaces, tabs and newlines present 

मैं यहाँ समस्या को दोहराने नहीं कर सकता:

 $x = "this \n \t\t \n works."; var_dump(preg_replace('/\s\s+/', ' ', $x)); // string(11) "this works." 

मुझे यकीन नहीं है कि यह सिर्फ एक प्रतिलेखन त्रुटि है या नहीं, लेकिन आपके उदाहरण में, आप एकल-उद्धृत स्ट्रिंग का उपयोग कर रहे हैं \n और \t केवल नए लाइन और टैब के रूप में माना जाता है यदि आपके पास दोहरे उद्धृत स्ट्रिंग मिलते हैं अर्थात्:

 '\n\t' != "\n\t" 

संपादित करें : जैसा कि कोडैक्टिक ने बताया, \s\s+ एक टैब वर्ण को प्रतिस्थापित नहीं करेगा मैं अभी भी \s+ का प्रयोग नहीं कर रहा हूं, हालांकि एक कुशल समाधान है, इसलिए इसके बदले इसके बारे में:

 preg_replace('/(?:\s\s+|\n|\t)/', ' ', $x); 
 preg_replace('/[\s]+/mu', ' ', $var); 

\s पहले से ही टैब और नई लाइनें हैं, इसलिए यह ऊपर regex पर्याप्त प्रतीत होता है।

एक समारोह में सरलीकृत:

 function removeWhiteSpace($text) { $text = preg_replace('/[\t\n\r\0\x0B]/', '', $text); $text = preg_replace('/([\s])\1+/', ' ', $text); $text = trim($text); return $text; } 

डैनियल ओ'नील के जवाब पर आधारित

 $str='This is a Text \n and so on Text text.'; print preg_replace("/[[:blank:]]+/"," ",$str); 

बिना preg_replace ()

 $str = "This is a Text \n and so on \t Text text."; $str = str_replace(["\r", "\n", "\t"], " ", $str); while (strpos($str, " ") !== false) { $str = str_replace(" ", " ", $str); } echo $str; 
 preg_replace('/(\s\s+|\t|\n)/', ' ', $row['message']); 

यह सभी टैब, सभी न्यूलाइंस और एक स्थान के साथ कई स्थानों, टैब और न्यूलाइनों के सभी संयोजन को बदल देता है।

 <?php #This should help some newbies # REGEX NOTES FROM DANUEL # I wrote these functions for my own php framework # Feel Free to make it better # If it gets more complicated than this. You need to do more software engineering/logic. # (.) // capture any character # \1 // if it is followed by itself # + // one or more class whitespace{ static function remove_doublewhitespace($s = null){ return $ret = preg_replace('/([\s])\1+/', ' ', $s); } static function remove_whitespace($s = null){ return $ret = preg_replace('/[\s]+/', '', $s ); } static function remove_whitespace_feed( $s = null){ return $ret = preg_replace('/[\t\n\r\0\x0B]/', '', $s); } static function smart_clean($s = null){ return $ret = trim( self::remove_doublewhitespace( self::remove_whitespace_feed($s) ) ); } } $string = " Hey yo, what's \t\n\tthe sc\r\nen\n\tario! \n"; echo whitespace::smart_clean($string); 

मैं यही उपयोग करूंगा:

ए। दोहरे उद्धरण चिह्नों का उपयोग करना सुनिश्चित करें, उदाहरण के लिए:

 $row['message'] = "This is a Text \n and so on \t Text text."; 

ख। अतिरिक्त सफेद स्थान निकालने के लिए, इसका उपयोग करें:

 $ro = preg_replace('/\s+/', ' ', $row['message']); echo $ro; 

यह सबसे तेज़ समाधान नहीं हो सकता है, लेकिन मुझे लगता है कि इसे कम से कम कोड की आवश्यकता होगी, और उसे काम करना चाहिए। मैंने कभी भी mysql का उपयोग नहीं किया है, इसलिए मैं गलत हो सकता है।

मैं इस कोड और पैटर्न का उपयोग करता हूं:

 preg_replace('/\\s+/', ' ',$data) $data = 'This is a Text and so on Text text on multiple lines and with whitespaces'; $data= preg_replace('/\\s+/', ' ',$data); echo $data; 

आप इस पर http://writecodeonline.com/php/ पर परीक्षण कर सकते हैं

आपको इसे चलाने की जरूरत है:

 echo preg_replace('/\s{2,}/', ' ', "This is a Text \n and so on \t Text text."); // This is a Text and so on Text text. 

सच में, यदि आपको लगता है कि आप ऐसा कुछ चाहते हैं:

 preg_replace('/\n+|\t+|\s+/',' ',$string); 

यह एक टैब के साथ कई टैब को बदल देगा

 preg_replace("/\s{2,}/", "\t", $string); 

लूप की मदद से preg_replace के बिना।

 <?php $str = "This is a Text \n and so on \t Text text."; $str_length = strlen($str); $str_arr = str_split($str); for ($i = 0; $i < $str_length; $i++) { if (isset($str_arr[$i + 1]) && $str_arr[$i] == ' ' && $str_arr[$i] == $str_arr[$i + 1]) { unset($str_arr[$i]); } else { continue; } } echo implode("", $str_arr) ; ?>