sprintf

(PHP 4, PHP 5, PHP 7)

sprintfBiçemli bir dizge döndürür

Açıklama

sprintf ( string $biçem [, mixed $değiştirgeler [, mixed $... ]] ) : string

biçem dizgesiyle biçemlenerek üretilmiş bir dizge döndürür.

Değiştirgeler

biçem

Biçem dizgesi sıfır veya daha fazla sayıda yönergeden oluşur: Sıradan karakterler (% hariç) doğrudan çıktıya kopyalanır. Dönüşüm belirtimleri ise her biri kendi değiştirgesini alarak bir sonuç üretir. printf() işlevi bu bakımdan sprintf() işlevi gibidir.

Her dönüşüm belirtimi, önüne yüzde imi (%) getirilmiş bir veya daha fazla sayıda, sırayla şu elemanlardan oluşur:

  1. Bir sayı üzerinde kullanılmak üzere + veya - işareti konulmasını sağlayan isteğe bağlı bir işaret belirteci. Öntanımlı olarak, sayı negatifse sadece - imini koymak için kullanılır. Bu belirteç PHP 4.3.0'dan itibaren pozitif sayılar için + iminin konulmasını da sağlamaktadır.
  2. Doğru dizge uzunluğunu elde etmek amacıyla dolgu olarak kullanılacak karakterin belirtilmesi için isteğe bağlı bir dolgu belirteci. Bu bir boşluk karakteri olabileceği gibi 0 karakteri de olabilir. Öntanımlı olarak boşlukla dolgu yapılır. Bir dolgu karakteri daha belirtmek gerekirse tek tırnak ile öncelenerek belirtilebilir. Örnekler için aşağıya bakınız.
  3. Sonucun sola mı yoksa sağa mı yanaştırılacağını belirtmek için isteğe bağlı bir hizalama belirteci. Öntanımlı olarak sağa hizalama yapılır; bir - karakteri sola hizalama yapılmasını sağlar.
  4. Dönüşümün en az kaç karakterle sonuçlanacağını belirten isteğe bağlı bir sayı olarak bir genişlik belirteci.
  5. Gerçek sayılarda ondalık hane sayısını belirtmek üzere bir noktanın (`.') ardına konan isteğe bağlı bir rakamdan oluşan bir dizge olarak isteğe bağlı bir hassasiyet belirteci. Bu belirteç bir dizge üzerinde kullanılırsa dizgenin içerebileceği azami karakter sayısını belirtir.
  6. Değiştirge verisinin hangi türde ele alınacağını belirtmek için bir tür belirteci. Olası türler:

    • % - Yüzde iminin kendisi. Bir değiştirge gerektirmez.
    • b - Değiştirgenin bir tamsayı olarak ele alınmasını ve bir ikil sayı olarak gösterilmesini sağlar.
    • c - Değiştirgenin bir tamsayı olarak ele alınmasını ve bu ASCII değere sahip karakterin gösterilmesini sağlar.
    • d - Değiştirgenin bir tamsayı olarak ele alınmasını ve bir (işaretli) onluk sayı olarak gösterilmesini sağlar.
    • e - Değiştirge bilimsel gösterimle ele alınır (1.2e+2 gibi). Hassasiyet belirteci PHP 5.2.1'den beri ondalık noktadan sonraki hane sayısını belirlemekte kullanılmaktadır. Önceki sürümlerde (bir eksiğiyle) kıymetli hanelerin sayısı olarak ele alınırdı.
    • u - Değiştirgenin bir tamsayı olarak ele alınmasını ve bir işaretsiz onluk sayı olarak gösterilmesini sağlar.
    • f - Değiştirgenin bir kayan noktalı sayı olarak ele alınmasını ve bir gerçek sayı olarak (yerele bağlı) gösterilmesini sağlar.
    • F - Değiştirgenin bir kayan noktalı sayı olarak ele alınmasını ve bir gerçek sayı olarak (yerele bağlı olmaksızın) gösterilmesini sağlar. PHP 4.3.10 ve PHP 5.0.3'ten beri kullanılabilmektedir.
    • o - Değiştirgenin bir tamsayı olarak ele alınmasını ve bir sekizlik sayı olarak gösterilmesini sağlar.
    • s - Değiştirge dizge olarak ele alınıp dizge olarak gösterilir.
    • x - Değiştirgenin bir tamsayı olarak ele alınmasını ve (küçük harfli) bir onaltılık sayı olarak gösterilmesini sağlar.
    • X - Değiştirgenin bir tamsayı olarak ele alınmasını ve (büyük harfli) bir onaltılık sayı olarak gösterilmesini sağlar.

Biçem dizgesi değiştirge numaralama ve yer değiştirme işlemlerini de destekler. Örnek:

Örnek 1 - Değiştirge takaslama

<?php
$format 
'There are %d monkeys in the %s';
printf($format$num$location);
?>
Çıktısı, "There are 5 monkeys in the tree" olmalıdır. Fakat biçem dizgesini uluslararasılaştırma amacıyla ayrı bir dosyada tuttuğumuzu varsayarak örneği şöyle oluşturursak asıl sorun ortaya çıkar:

Örnek 2 - Değiştirge takaslama

<?php
$format 
'The %s contains %d monkeys';
printf($format$num$location);
?>
İşte şimdi sorun var. Değiştirgelerin sırası biçem dizgesindeki sırayla eşleşmiyor. Kodu olduğu gibi bırakıp biçem dizgesindeki belirtimlerin sırasını değiştirebiliriz. Bu durumda biçem dizgesi şöyle olur:

Örnek 3 - Değiştirge takaslama

<?php
$format 
'The %2$s contains %1$d monkeys';
printf($format$num$location);
?>
Değiştirge sayısını arttırmadan biçem dizgesindeki belirtimlerin sayısını arttırabiliriz:

Örnek 4 - Değiştirge takaslama

<?php
$format 
'The %2$s contains %1$d monkeys.
           That\'s a nice %2$s full of %1$d monkeys.'
;
printf($format$num$location);
?>

args

...

Dönen Değerler

biçem dizgesine göre biçemlendirilerek üretilen bir dizge döner.

Sürüm Bilgisi

Sürüm: Açıklama
4.0.6 Değiştirge numaralama/takaslama desteği eklendi.

Örnekler

Örnek 5 - Çeşitli printf()örnekleri

<?php
$n 
=  43951789;
$u = -43951789;
$c 65// ASCII 65 is 'A'

// Dikkat: %%, sadece bir tane '%' basar
printf("%%b = '%b'\n"$n); // ikil gösterim
printf("%%c = '%c'\n"$c); // ascii karakteri basar; chr() ile aynı
printf("%%d = '%d'\n"$n); // standart tamsayı gösterimi
printf("%%e = '%e'\n"$n); // bilimsel gösterim
printf("%%u = '%u'\n"$n); // pozitif tamsayının işaretsiz tamsayı gösterimi
printf("%%u = '%u'\n"$u); // negatif tamsayının işaretsiz tamsayı gösterimi
printf("%%f = '%f'\n"$n); // gerçek sayı gösterimi
printf("%%o = '%o'\n"$n); // sekizlik gösterim
printf("%%s = '%s'\n"$n); // dizge gösterimi
printf("%%x = '%x'\n"$n); // küçük harfli onaltılık sayı gösterimi
printf("%%X = '%X'\n"$n); // büyük harfli onaltılık sayı gösterimi

printf("%%+d = '%+d'\n"$n); // pozitif tamsayı üzerinde işaret belirteci
printf("%%+d = '%+d'\n"$u); // negatif tamsayı üzerinde işaret belirteci
?>

Yukarıdaki örneğin çıktısı:

%b = '10100111101010011010101101'
%c = 'A'
%d = '43951789'
%e = '4.39518e+7'
%u = '43951789'
%u = '4251015507'
%f = '43951789.000000'
%o = '247523255'
%s = '43951789'
%x = '29ea6ad'
%X = '29EA6AD'
%+d = '+43951789'
%+d = '-43951789'

Örnek 6 - printf() dizge belirtimleri

<?php
$s 
'monkey';
$t 'many monkeys';

printf("[%s]\n",      $s); // standart dizge
printf("[%10s]\n",    $s); // boşluklarla sağa hizalanır
printf("[%-10s]\n",   $s); // boşluklarla sola hizalanır
printf("[%010s]\n",   $s); // 0'larla doldurma dizgelerde de çalışır
printf("[%'#10s]\n",  $s); // '#' özel dolgu karakteri olarak kullanılır
printf("[%10.10s]\n"$t); // 10 karakterlik sınırlamayla sola hizalama
?>

Yukarıdaki örneğin çıktısı:

[monkey]
[    monkey]
[monkey    ]
[0000monkey]
[####monkey]
[many monke]

Örnek 7 - sprintf() ve sıfır dolgulu tamsayılar

<?php
$isodate 
sprintf("%04d-%02d-%02d"$year$month$day);
?>

Örnek 8 - sprintf() ve para biçemleme

<?php
$money1 
68.75;
$money2 54.35;
$money $money1 $money2;
// echo $money çıktısı: "123.1"
$formatted sprintf("%01.2f"$money);
// echo $formatted çıktısı: "123.10"
?>

Örnek 9 - sprintf() ve bilimsel gösterim

<?php
$number 
362525200;

echo 
sprintf("%.3e"$number); // 3.625e+8 çıktılar
?>

Ayrıca Bakınız

  • printf() - Biçemli bir dizge çıktılar
  • sscanf() - Girdi dizgesini belli bir biçeme göre yorumlar
  • fscanf() - Bir dosyadaki girdiyi belli bir biçeme göre çözümler
  • vsprintf() - Biçemli bir dizge döndürür
  • number_format() - Sayıyı binlik bölümlere ayırır