2011-03-10 34 views
6

Yeni satırları (\ r \ n) boşlukla değiştirmek istiyorum ancak boş satırları korumak istiyorum. Diğer bir deyişle, \ r \ n yerine '' ile değiştirmek istiyorum, eğer \ r \ n başka bir öncekinden değilse \ r \ n. Örneğin:Yeni satırları değiştirin, ancak boş satırları koruyun

line 1 

line 2 
line 3 
line 4 

Bu

ile şu anda ne yapıyorum ki ... "satır 1 satır 2 satır 3 satır 4" olarak

line 1 

line 2 line 3 line 4 

Ama sonunda shold

preg_replace("/\r\n/", " ", $string); 

cevap

3

bu deneyin: Elbette

(?<!\n)\n(?!\n) 

, ihtiyacınız ne olursa olsun hiç \n değiştirebilir.

Çalışma örneği: http://ideone.com/dF5L9

+0

Şimdiye kadar önerilen tek şey, aslında gerektiği gibi çalışıyor. +1. –

+0

Güzel. (? ssam

2

bu deneyin:

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

Nope. Hala boş satırları öldürür. Denediğiniz için teşekkürler. – ssam

+0

Bu, iki satırdan birini diğerine indirir, ilk satır, satır 1'den hemen sonra, normal ifadeyle eşleştirilebilir. – Kobi

+0

@ssam: Güncelleme bölümüne bakın. – Gumbo

1

Bu yapmalı hüner:

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