Yeni bir satır yazdırmak için çift tırnaklı bir dizgenin içine \n yazın: echo "Line 1\nLine 2";. PHP_EOL sabiti aynı işi yapar ve bir satırın sonunda daha açık okunur: echo 'Done' . PHP_EOL;. Bir web sayfasında yeni satır bir satır sonu olarak görünmez; orada <br> veya nl2br() gerekir.
Tek tırnak ile çift tırnak
\n ve \t gibi kaçış dizileri yalnızca çift tırnak içinde çalışır. Tek tırnak içinde '\n' iki karakterdir: bir ters eğik çizgi ve n harfi. "\n çalışmıyor" sorununun olağan nedeni budur.
Dizgeler sayfası çift tırnağın anladığı her kaçış dizisini listeler.
PHP_EOL ile "\n" karşılaştırması
PHP_EOL PHP'nin çalıştığı sistemin satır sonudur: Linux ve macOS'ta "\n", Windows'ta "\r\n". Terminal çıktısı ve aynı makinede okuyacağınız dosyalar için kullanın. Bir biçim kendi satır sonunu tanımlıyorsa onun yerine onu kullanın: HTTP başlıkları ve e-posta "\r\n" ister, çoğu araç ise her yerde "\n" okumakta sorun yaşamaz.
"\r" bir satır başı (carriage return), "\n" bir satır beslemedir (line feed). Windows dosyaları satırları ikisiyle birden, "\r\n" ile bitirir; bir Windows kullanıcısından veya bir <textarea> alanından gelen metnin çoğu zaman beklemediğiniz \r karakterleri içermesinin nedeni budur.
HTML'de yeni satır: br ve nl2br
Bir tarayıcı yeni satırları tek bir boşluğa indirger, bu yüzden echo "a\nb" sayfada a b gösterir. Ya <br> etiketini kendiniz yazdırın ya da yeni satırları metninizde tutun ve her birinin önüne <br /> ekleyen nl2br() ile dönüştürün. Bunu çalıştırın ve Output ile Page sekmelerini karşılaştırın:
Output sekmesinde üçü de benzer görünür. Page sekmesinde ilki tek satırda birleşir, nl2br() onu böler ve <pre> yeni satırları yazıldığı gibi korur.
textarea girdisini satır sonlarıyla gösterme
Bir <textarea> alanından gelen metin kullanıcının yazdığı satırları korur, ama onu HTML'e yazdırmadan önce kaçışlamanız gerekir. Sıra önemlidir: önce htmlspecialchars(), sonra nl2br(), aksi halde <br /> etiketlerinin kendisi kaçışlanırdı. Çalıştırın, kutuya birkaç satır yazın ve Preview düğmesine basın: aynı betik $_POST doldurulmuş olarak yeniden çalışır.
Bir textarea satır sonu "\r\n" veya "\n" olarak gelebilir; ikisi de "\n" içerir, bu yüzden o karakteri saymak her iki durumda da çalışır. htmlspecialchars() burada kaçışlamanın neden isteğe bağlı olmadığını açıklar.
Bir dizgeyi yeni satıra göre bölme
explode("\n", $text) kendi oluşturduğunuz metinde çalışır. Kullanıcılardan veya dosyalardan gelen metinde satır sonları "\r\n", "\n" veya "\r" olabilir; preg_split('/\R/', $text) hepsini işler, çünkü \R her satır sonuyla eşleşir.
Bir dizgeden satır sonlarını silme
Çok satırlı bir metni tek satıra çevirmek için her tür satır sonunu değiştirin. "\r\n" değerini tek karakterlerden önce değiştirin, yoksa her Windows satır sonu iki boşluğa dönüşür:
trim() ve rtrim() bir dizgenin uçlarındaki yeni satırları siler ama ortadakileri asla silmez; bu yüzden bir dosyadan okunan bir satır için doğru, satırları birleştirmek için yanlış araçtır.
Sıkça Sorulan Sorular
PHP'de echo ile nasıl yeni satır yazdırırım?
Çift tırnaklı bir dizgenin içine \n koyun: echo "Line 1\nLine 2";. Ya da sabiti ekleyin: echo 'Line 1' . PHP_EOL;. Bir tarayıcıda yeni satır gösterilmez; orada <br> veya nl2br() kullanın.
PHP'de \n neden çalışmıyor?
Ya dizge, '\n' ifadesinin bir ters eğik çizgi ve bir n olduğu tek tırnak içindedir ya da çıktı, tarayıcının yeni satırı boşluk gibi gördüğü HTML olarak gösterilir. Metin çıktısı için çift tırnak içinde "\n", web sayfaları için nl2br() veya <br> kullanın.
PHP_EOL nedir?
PHP'nin çalıştığı işletim sisteminin satır sonunu tutan bir sabittir: Linux ve macOS'ta "\n", Windows'ta "\r\n". Terminal veya yerel dosyalar için olan çıktıda kullanın; HTTP, e-postalar ve CSV dosyalarında satır sonunu işletim sisteminden bağımsız olarak genellikle biçimin kendisi belirler.
PHP'de nl2br ne işe yarar?
nl2br($text) dizgedeki her satır sonundan önce <br /> ekler, böylece bir <textarea> içine yazılan metin HTML'de gösterildiğinde satırlarını korur. Önce kaçışlayın: nl2br(htmlspecialchars($text)).
PHP'de bir dizgeden satır sonlarını nasıl silerim?
Üç tür satır sonunu da değiştirin: str_replace(["\r\n", "\r", "\n"], ' ', $text) ya da bir regex ile preg_replace('/\R/', ' ', $text). Yalnızca sondaki yeni satırı silmek için rtrim($text, "\r\n") kullanın.