2009-05-03 22 views
11

Sadece (ideal web sitesinin konuyu çevreleyen) ziyaretçiler tarafından yayınlanmıştır mesajları görüntüler PHP'de bir single serving site geliştiriyorum. Herkes bir saatte üç mesaj gönderebilir.Çıkarma gereksiz hat düzenli ifadeler ile kırar

Web sitesi yalnızca bir sayfa olacağından, her iletinin dikey uzunluğunu kontrol etmek istiyorum. Ancak, asıl mesajdaki satır sonlarını kısmen korumak istiyorum. Bir uzlaşma iki satır aralığına izin vermek olacaktır, ancak ikiden fazla varsa, bunları bir satırda toplam iki satır kesmesiyle değiştirin. Yığın Taşması bunu uygular. Örneğin

: "Oklukirpiler \ nare \ n \ n \ n \ nporcupiney"

şekilde değiştirilir "porcupines < Br /> < Br /> < Br /> Kirpicik vardır." keser hattı için denetleme

bir yanı bunların toplandı ve \ r \ n \ r, veya \ n depolanan olasılığıdır. Tüm satır sonlarını nl2br() kullanarak < br /> s'ye dönüştürmeyi düşündüm, ancak bu gereksiz görünüyordu.

Soruma Soru: PHP'deki normal ifadeleri kullanma (preg_match() ve preg_replace() gibi işlevlerle), satırdaki iki satırdan daha çok (aralarında boşluk olan veya olmayan boşluklar) örnekleri nasıl kontrol edebilirim ve daha sonra bunları iki satır arasına dönüştürün? çalışması gerekir

preg_replace('/(\r|\n|\r\n){2,}/', '<br/><br/>', $text); 

gibi

cevap

30
preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $text) 
+0

Teşekkürler kaos! Bu tam olarak istenen çalışır. Orijinal cevabınız da işe yaradı. – tevan

+0

Orijinal yanıt, 'ölçütünüzde boş alan olsun ya da olmasın' karşılığını karşılamadı. :) – chaos

+0

Ama sadece bir satır sonu olduğunda, ikiye değiştirir? Tek bir mola olduğu gibi bırakılmamalıdır? – NonCoder

6

şey sanırım. PHP sözdizimini tam olarak hatırlamamasına rağmen, biraz daha kaçışa ihtiyaç duyabilir: -/

+0

Teşekkürler David. Gönderdiğiniz normal ifade ile gördüğüm tek sorun, satır sonları arasındaki boşlukları barındırmamasıdır. – tevan

+0

Ah, doğru ... Hat araları arasındaki boşluklardan bahsettiğin sorunun cevabını kaçırdım. –

İlgili konular