2011-03-10 7 views
6

रखें, मैं नई लाइनों (\ r \ n) को स्थान के साथ प्रतिस्थापित करना चाहता हूं, लेकिन मैं रिक्त रेखाएं रखना चाहता हूं। दूसरे शब्दों में, मैं \ r \ n को '' से बदलना चाहता हूं, अगर \ r \ n किसी अन्य \ r \ n से पहले नहीं है। उदाहरण के लिए:नई लाइनों को बदलें, लेकिन रिक्त रेखाएं

line 1 

line 2 
line 3 
line 4 

line 1 

line 2 line 3 line 4 

लेकिन के रूप में "लाइन 1 लाइन 2 लाइन 3 लाइन 4", नहीं के रूप में अंत shold ... जो क्या मैं इस

साथ अभी कर रहा हूँ है
preg_replace("/\r\n/", " ", $string); 

उत्तर

3

इस प्रयास करें:

(?<!\n)\n(?!\n) 
बेशक

, आप जो कुछ भी आप की जरूरत करने के लिए \n बदल सकते हैं।

कार्य उदाहरण: http://ideone.com/dF5L9

+0

एकमात्र ऐसा सुझाव दिया गया है जो वास्तव में आवश्यकतानुसार काम करता प्रतीत होता है। +1। –

+0

सुंदर। मैंने इस्तेमाल किया (? ssam

2

इस प्रयास करें:

preg_replace("/(.)\r\n(?=.|$)/", "$1 ", $string); 
+0

नहीं। यह अभी भी खाली लाइनों को मारता है। कोशिश करने के लिए धन्यवाद। – ssam

+0

यह दो नई लाइनों को एक से कम करता है, पहला, 'लाइन 1' के ठीक बाद, रेगेक्स द्वारा मिलान किया जा सकता है। – Kobi

+0

@ssam: मेरा अपडेट देखें। – Gumbo

1

यह करना चाहिए चाल:

preg_replace("/(?<!\n)\n(?!\n)/", " ", $string);