2012-05-18 23 views
6

Aşırı boş satırları bir dizeden kaldırmak, ancak her satır arasında bir boş satıra izin vermek istiyorum. Gibi:Dizindeki boş satırları kaldırın, ancak her satırın arasına boş bir boşluk bırakın

line1 





line2 

gibi olmalı: (i buldum nerede unuttum)

line1 

line2 

aşağıdaki regex buldunuz:

preg_replace('/^\n+|^[\t\s]*\n+/m','',$message); 

Bu çalışır, ancak ayrılmadan tüm boş satırları kaldırır her satır arasında boş bir çizgi.

Düzenleme: Sadece http://jsfiddle.net/RAqSS/

+0

Bunu mu? –

+0

Temel olarak, her satır arasında 2'den fazla boş satır varsa, yalnızca bir tane için kırpılmalıdır. Yani temel olarak kalan boş satır, 1 em kadar yüksek olmalıdır. – Sempiterna

+0

'Boş satır' ile ne demek istediğini tanımlaman gerektiğini düşünüyorum. Soruda açıkladığınız şey boş bir hat değildir. –

cevap

6

Dene:

\n(\s*\n){2,} 

ile: Bunun gibi

\n\n 

: Boş bir çizgi istemiyorsanız

preg_replace('/\n(\s*\n){2,}/', "\n\n", $message); // Quotes are important here. 

, bir karşı {2,} değiştirecek + ve tek bir \n kullanın. Aslında {2,} yerine + ile çalışır. {2,} bir optimizasyondur. senin jsFiddle dayanarak

+0

Evet, bu tam istediğim gibi çalışıyor. Çok teşekkür ederim! :) – Sempiterna

+1

Bu bir tam olarak çalışıyor!Boş satır istemiyorsanız, aşağıdaki kodu kullanırsınız: 'preg_replace ('/ \ n (\ s * \ n) + /'," \ n ", $ output);' – Devner

4

de hızlı bir örnek oluşturdu Aşağıdakileri deneyin:

preg_replace('/\n(\s*\n)+/', "\n\n", $message); 

Bu tek bir satırsonu ile boş satırlar herhangi bir sayıda ardından Yeni satır yerini alacaktır. değiştirilmesi

+0

Bu işe yaramıyor. Bir şekilde boş bir dize bırakarak tüm içeriği kaldırır. – Sempiterna

+0

'\ n ', tek bir yeni satır değil. –

+0

@KendallFrey - Teşekkürler, başlangıçta OP, 'line \ nline2' için soruyordu ama jsfiddle'a göre doğru bir şekilde yorumladığınıza benziyor. –

0

, şunu deneyin: "Aşağıdaki gibi olmalıdır:: satırı1 \ n \ n satırı2"

$result = preg_replace('/\n(\n*\s)+/', "\n\n", $message); 
+0

İkinci kodunuz neredeyse çalışır . Tüm boş satırları değiştirir ve her bir metin parçası arasında boş bir çizgi ile değiştirir. Ancak, aynı zamanda, birden fazla boş satır içermeyen her bir metin parçası arasında boş bir çizgi ekler. – Sempiterna

+0

Sorunuzu, verilerinizin daha ayrıntılı bir örneğiyle ve beklenen sonuçlarla güncelleyebilir misiniz? – sudoash

İlgili konular