Menu

PHP sprintf(): Dizge Biçimlendirme, Doldurma ve Ondalıklar

sprintf() bir biçimden ve değerlerden bir dizge oluşturur: sprintf('%05.2f', 3.14159) "03.14" döndürür. %s, %d ve %f, sıfırla doldurma, sabit ondalıklar, hizalama, argüman numaralandırma, printf ve vsprintf.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

sprintf() bir biçimden ve bir değer listesinden oluşturulmuş bir dizge döndürür: biçimdeki her % yer tutucusu sıradaki değerle değiştirilir. sprintf('%s is %d years old', 'Ada', 36) "Ada is 36 years old" döndürür. printf() aynı argümanları alır ama sonucu döndürmek yerine yazdırır.

Yer tutucular soldan sağa sırayla doldurulur. %.2f her zaman iki ondalık gösterir (4.5 değil 4.50) ve %05d sayıyı sıfırlarla beş basamağa tamamlar.

Biçim belirteçleri

Bir yer tutucu %, isteğe bağlı değiştiriciler ve tür için tek bir harften oluşur:

BelirteçAnlamısprintf(...)Sonuç
%sdizgesprintf('%s', 'PHP')PHP
%dtam sayı (işaretli)sprintf('%d', 42.9)42
%fondalıklı sayı, varsayılan 6 ondalıksprintf('%f', 1.5)1.500000
%.2fondalıklı sayı, 2 ondalıksprintf('%.2f', 1.5)1.50
%ebilimsel gösterimsprintf('%e', 1234.5678)1.234568e+3
%x / %Xonaltılıksprintf('%x', 255)ff
%osekizliksprintf('%o', 8)10
%bikiliksprintf('%b', 5)101
%ckoddan karaktersprintf('%c', 65)A
%uişaretsiz tam sayısprintf('%u', 3)3
%%düz bir yüzde işaretisprintf('%d%%', 50)50%

Aşağıdaki değerleri değiştirin ve tekrar çalıştırın:

%d bir ondalıklı sayıyı sıfıra doğru keser, bu yüzden 42.9 42 olur. 43 istiyorsanız önce yuvarlayın: sprintf('%d', round(42.9)). 'abc' gibi sayı olmayan bir dizge %d altında 0 olur.

Baştaki sıfırlarla doldurma

% ile harf arasına bir doldurma karakteri ve bir genişlik koyabilirsiniz. %05d "5 genişliğe kadar 0 ile doldur" demektir. Sipariş numaralarını, fatura numaralarını, saatleri ve tarihleri biçimlendirmenin olağan yolu budur.

Genişlik bir alt sınırdır. Genişlikten uzun bir sayı tam olarak yazdırılır.

%05.2f: genişlik ve ondalıklar birlikte

Ondalıklı sayılarda genişlik, ondalık nokta ve eksi işareti dahil sonucun her karakterini sayar. %05.2f biçiminin 3.14159 için 03.14 vermesinin nedeni budur: toplam beş karakter, ikisi noktadan sonra.

%f geçerli yerel ayarın (setlocale() ile ayarlanan) ondalık ayırıcısını kullanır, %F ise her zaman nokta kullanır. Kodunuz bir yerel ayar belirliyorsa ve JSON, CSV veya bir API için noktaya ihtiyacınız varsa %F kullanın.

Metni sütunlarda hizalama

Pozitif bir genişlik sağa hizalar, genişlikten önceki bir - sola hizalar ve ' ardından gelen bir karakter özel bir doldurma karakteri belirler. Birlikte düz metin raporlarını ve fişleri hizalarlar.

%-14s ürün adını sağdan 14 karaktere doldurur, %8.2f fiyatı 8 karakterde sağa hizalar ve boş bir dizgeyle %'-27s 27 tirelik bir çizgi yazdırır. %'*10s boşluk yerine * ile doldurur.

Argümanları yeniden kullanmak veya sıralamak için numaralandırma

%1$s "dizge olarak ilk argüman", %2$d "tam sayı olarak ikinci argüman" demektir. Numaralandırılmış yer tutucular bir değeri iki kez kullanmanıza ya da argüman listesini değiştirmeden sırayı değiştirmenize izin verir; diller arasında kelime sırası farklı olduğunda çevirmenlerin ihtiyaç duyduğu budur.

vsprintf, printf ve dönüş değerleri

vsprintf() değerleri tek bir dizi olarak alır; değerler zaten bir dizide durduğunda kullanışlıdır. printf() yazdırdığı bayt sayısını döndürür ve vprintf(), printf() fonksiyonunun dizi sürümüdür.

printf() sayısına yeni satır dahildir, bu yüzden "Hello\n" 6 bayttır. Çok baytlı metinlerde karakterleri değil baytları sayar.

Az argüman hata fırlatır

PHP 8'den beri değerlerden fazla yer tutucu içeren bir biçim false döndürmek yerine bir ArgumentCountError fırlatır. Bu hatayı gördüğünüzde % yer tutucularını (%% hariç) sayın.

Mesaj biçim dizgesini de bir argüman olarak sayar: ArgumentCountError: 4 arguments are required, 3 given. Fazla argümanlar sessizce yok sayılır, bu yüzden ters hata bir hata olarak görünmez. Bir sprintf sonucu yanlış görünüyorsa biçimi değerlerin yanında yazdırın. Tek ihtiyacınız bir binlik ayırıcıysa number_format() onu sprintf ile kurmaktan daha basittir. Değiştiricilerin tam listesi php.net üzerinde.

Sıkça Sorulan Sorular

PHP'de bir sayının başına nasıl sıfır eklerim?

"00042" döndüren sprintf('%05d', 42) kullanın. 0 doldurma karakteri, 5 ise toplam genişliktir. Bir dizge için str_pad('42', 5, '0', STR_PAD_LEFT) aynı sonucu verir.

sprintf ile bir sayıyı 2 ondalık basamağa nasıl biçimlendiririm?

%.2f kullanın: sprintf('%.2f', 3.14159) "3.14", sprintf('%.2f', 5) ise "5.00" döndürür. Doldurmak için bir genişlik de ekleyin: %08.2f "00003.14" verir.

PHP'de printf ile sprintf arasındaki fark nedir?

sprintf() biçimlendirilmiş dizgeyi döndürür, böylece onu saklayabilirsiniz. printf() onu hemen yazdırır ve yazdırılan bayt sayısını döndürür. echo sprintf(...) ve printf(...) aynı çıktıyı üretir.

PHP'de %s ne anlama gelir?

%s sprintf() ve printf() içinde bir dizge için yer tutucudur: sprintf('Hello, %s', 'Ada') "Hello, Ada" döndürür. %s yer tutucusuna verilen sayılar dizgeye çevrilir. %d tam sayılar, %f ondalıklı sayılar içindir.

sprintf içinde aynı argümanı iki kez nasıl kullanırım?

Yer tutucuları numaralandırın: sprintf('%1$s loves %2$s, and %2$s loves %1$s', 'Ada', 'PHP'). Biçimin etrafında tek tırnak kullanın: çift tırnak içinde PHP $s ifadesini bir değişken olarak okur, bu yüzden "%1$s" %1 ve ardından $s değerine dönüşür.

Coddy programlama dilleri çizimi

Coddy ile kodlamayı öğren

BAŞLA