Menü
Bedava
kayıt
ev  /  Tavsiye/ PHP sprintf: dizeleri biçimlendirme ve işleme. PHP Printf php örneklerinde çıktı işlevlerini biçimlendirin

PHP sprintf: dizeleri biçimlendirme ve işleme. PHP Printf php örneklerinde çıktı işlevlerini biçimlendirin

baskı("nasıl biçimlendirilir", parametre1, parametre2, ...) - sonucu ekranda görüntüler

$ sonuç = sprintf("..", .., .., ...) - aynı şey, yalnızca dize görüntülenmez, ancak $ sonucuna yerleştirilir

Kılavuzun çevirisinden alıntı ( ÖRNEKLER aşağıda:-):

sprintf

sprintf - Biçimlendirilmiş bir dize döndürür
Açıklama
sprintf (dize biçimi, karışık ...);

Biçimlendirme dizesine göre işlenen bir dize döndürür biçim .

Sıfır veya daha fazla yönerge içeren bir biçimlendirme dizesi: doğrudan sonuca kopyalanan ve doğrudan sonuca kopyalanan normal karakterler (% hariç) ve değişikliklerin açıklamaları, her biri belirli eylemler gerçekleştirir. Bu .... için geçerlidir sprintf () ve yazdır ()

Her değişiklik açıklaması sırayla aşağıdaki öğelerden oluşur:

    Ek olarak dolgu belirteci sonucu dizenin doğru boyutuna doldurmak için hangi karakterlerin kullanılacağını söyler. Bunlar boşluk veya 0 (sıfır karakter) olabilir. Varsayılan olarak boşluklarla doldurulur. Tek bir tırnak işaretiyle ("") alternatif bir dolgu karakteri belirtilebilir. Aşağıdaki örneklere bakın.

    Ek olarak hizalama belirteci bu da sonucun sola hizalı veya sağa hizalı olması gerektiğini söylüyor. Varsayılan olarak hizalama doğrudur; sembolü - sola hizalanır.

    Ek olarak genişlik belirteci, verilen değiştirmenin kaç karakterle (en az) yapılabileceğini söyler.

    Ek olarak kesinlik belirteci kayan nokta sayıları için kaç ondalık basamak gösterileceğini söyler. Bu belirtecin double dışındaki türler üzerinde hiçbir etkisi yoktur. (bir diğeri faydalı fonksiyon sayıları biçimlendirmek için bu sayı_format () .)

  1. Tür belirteci bu, argümanın veri türünün nasıl yorumlanması gerektiğini söyler. Olası türler:

    % bir yüzde sembolüdür. Argüman gerekmez.
    b - bağımsız değişken bir tam sayı olarak değerlendirilir ve ikili sayı olarak gösterilir.
    c - bağımsız değişken bir tamsayı olarak ele alınır ve ASCII değerine sahip bir karakter olarak temsil edilir.
    d - bağımsız değişken bir tam sayı olarak değerlendirilir ve ondalık sayı olarak gösterilir.
    f - bağımsız değişken bir double olarak değerlendirilir ve bir kayan noktalı sayı olarak gösterilir.
    o - argüman bir tamsayı olarak ele alınır ve sekizlik bir sayı olarak temsil edilir.
    s - argüman yorumlanır ve bir dizge olarak sunulur.
    x - Bağımsız değişken bir tamsayı olarak değerlendirilir ve onaltılık bir sayı (küçük harflerle) olarak gösterilir.
    X - bağımsız değişken bir tam sayı olarak değerlendirilir ve onaltılık bir sayı (büyük harflerle) olarak gösterilir.
Örnekleri

Örnek 2.sprintf: Para Birimi Biçimlendirme

$ para1 = 68,75; $ para2 = 54.35; $ para = $ para1 + $ para2; // echo $ para çıktısı "123.1" olacak; $ biçimlendirilmiş = sprintf ("% 01.2f", $ para); // echo $ formatlı çıktı "123.10" olacak

Örnekleri

yazılanların hepsi >>> bu tür parantezler arasında <<< fonksiyonun sonucudur (yani ekrana bir çıktı örneği) $ s = "MyString"; -> string% s $ f = 12345.6789; -> kesirli% f $ d = 12345; -> tamsayı% d 10. sistem: 0123456789 16numbers% x 16. sistem: 0123456789abcdef 16numbers% X 16. sistem: 0123456789ABCDEF 8numbers% o 8. sistem: 01234567 2numbers% b 2. sistem: 01 sadece sayıyı yazdırın : printf ("% d", $ NS); >>> 12345<<< просто выводим 16число: printf("%X",123456789); >>> 75BCD15<<< просто выводим 2число: printf("%b",$d); >>> 11000000111001 <<< просто выводим дробное число: printf("%f",$f); >>> 12345.6789 <<< дополнение чисел нулями: printf("%010d",$d); >>> 0000012345 <<< округление до 3х знаков после запятой: printf("%.3f",$f); >>> 12345.679 <<< просто выводим число + посторонний текст: printf("посторонний%dтекст",$d); >>> gereksiz 12345 metin<<< вывод нескольких переменных - последовательное перечисление printf("%d-%f-%s",$d,$f,$s); >>> 12345-12345.678900-MyString<<< выравнивание (ширина 20 символов) по правому краю, пустоту заполняем "_": printf("%"_20s",MyString); >>> ____________MyString<<< выравнивание по левому краю, пустоту заполняем "x": printf("%-"x20s",MyString); >>> MyStringxxxxxxxxxxxx<<<

Buradaki diğer örneklere bakın:

Standart C konsol işlevi printf'dir. Açıklaması stdio.h başlık dosyasında bulunur. Bu işlevi kullanarak, konsola veri veya özel mesajlar gönderebilirsiniz. C dili büyük/küçük harf duyarlıdır. Örneğin, printf ve scanf iki işlevi, Printf ve Scanf gibi işlevlerden farklıdır. printf ve scanf fonksiyonlarındaki tüm karakterler de küçük harfle yazılmalıdır. Tanıdık merhaba dünya selamını gösteren en basit C printf örneklerinden biri:

"stdio.h" dosyasında printf grubunun işlevlerini tanımlama

"stdio.h" dosyası, C standart I/O kitaplığını ifade eder.Printf ve benzeri işlevler şu şekilde açıklanmaktadır:

Listelenen işlevler, belirli konumlardan veri yükler, onu bir karakter dizisine dönüştürür ve belirtilen çıktı akışlarına gönderir.

printf fonksiyon ailesi

C dilindeki printf grubunun işlevleri, standart akışa veri çıktısını işlemek ve biçimlendirmek için kullanılır. Ayrıca, printf ve vprintf işlevleri standart stdout akışına yazar, fprintf ve vfprintf işlevleri, çıkış argümanlarının değerlerini belirtilen bazı çıkış akışına gönderir ve snprintf, sprintf, vsnprintf ve vsprintf bir karakter dizesine veri yazar. Bu işlevlerin tümü, çıktı için gerekli bağımsız değişken dönüşümlerini belirten bir biçim dizesi kullanarak çalışır.

fprintf işlevi, sonucu çıktı akışı akışına yazar. sprintf işlevi, sonucu bir karakter dizisi olan bir arabelleğe verir. Çıktı alınacak dize arabellek dizisinin boyutunu aşıyorsa, işlevin davranışı tanımsızdır.

snprintf işlevi, önceki gibi, verileri bir dize arabelleğine yazar. Elde edilen karakter dizisi, bufsz (arabellek boyutu) sıfır olmadığı sürece boş sonlandırılır. Aksi takdirde, bufsz değeri sıfırsa, arabelleğe hiçbir şey gönderilmez ve arabelleğin kendisi bir boş gösterici olabilir, ancak dönüş değeri (yazılması gereken bayt sayısı) yine de hesaplanır.

printf_s işlevi, tek bir şey dışında, temelde printf ile aynı şekilde hareket eder. C ve printf'deki printf_s tanımları arasındaki temel fark, printf_s işlevinin format dizgisini geçerli karakterler için kontrol etmesidir, printf'in aksine biçim dizgisini boş gösterici için kontrol eder.

Printf işlevine daha yakından bakalım.

Genel açıklama

C'de karakterler, printf işlevi çağrılarak standart çıktıya yazdırılır. C printf komutu, bir dizi çıktı verisini biçimlendirir ve bunu stdout'a gönderir. İşleve argüman olarak iletilen değerler, sırasıyla iki tür öğe içeren belirtilen biçim dizesine göre konsola yazdırılır. Birinci tip, ekranda görüntülenen karakterlerdir ve veri formatının özelliklerini belirleyen ve çıktıda argüman sunma yönteminden sorumlu olan unsurlar ikinci tipe aittir.

C'de printf ile değişkenleri yazdırırken, argüman dizesindeki özel karakter kombinasyonları, bu karakterlere göre dönüştürülen verilerle değiştirilir ve her veri türünün kendi çıktı biçimi özellikleri vardır.

Fonksiyon tipi ve dönüş değeri

Printf işlevi, ekrana yazdırılan karakter sayısını gösteren bir tamsayı değeri döndürür. Örneğin, şunları atayabilirsiniz:

int k = printf ("Merhaba% c% d% s", "a", 11, "herkes!"),

ve daha sonra k değişkeninin değeri ile çıktıda bir hatanın oluşup oluşmadığını belirlemek kolaydır. Negatif bir değer döndürülürse (işlev "-1" döndürdüyse), yürütme sırasında bir hata oluştuğu sonucuna varabiliriz.

Sözdizimi ve bağımlılıklar

printf işlevini kullanmak için "stdio.h" başlık dosyasını aşağıdaki gibi eklemeniz gerekir:

#Dahil etmek

İşlev şablonu şöyle görünür:

int printf (const char * biçimi, ...)

Üç nokta, yazdırılacak argümanların listesine atıfta bulunur. printf işlevi farklı sayıda argümanla kullanılabilir, ancak ilki her zaman her iki tarafta çift tırnak ile sınırlandırılır ve sonraki her biri bir önceki virgülden ayrılmalıdır. Çift tırnak içinde yazılanlar ve biçim belirtimi olmayanlar değiştirilmeden yazdırılır, aksi takdirde bir belirteçle karşılaşılırsa değerinin türü kopyalanır.

Format özelliklerini ayarlama formu:

% [bayraklar] [genişlik] [.konum] [uzunluk] tip

C çıktı değerlerinde printf ile biçimlendirme

Çağrılan işlevin adından sonra parantez içinde belirtilen biçim dizesinin okunması yalnızca bir yönde gerçekleşir: soldan sağa ve bu satırın kendisinden sonra belirtilen ilk argüman, yalnızca ilk belirtimle karşılaşılırsa verilir. Biçim dizesi bitene kadar, içinde belirtilen özellikler, sonraki bağımsız değişkenlerin dönüştürülmesini ve yazdırılmasını başlatır. Bir biçim dizesinde, boşluk karakteri normal bir karakter olarak kabul edilir ve bir biçim belirtimi ifadesinde kullanılmadığında çıktıya iletilir.

"%" karakteri, çıktı biçimi belirtiminin başlangıcını ve ardından biçim kodunu belirtir. Belirtimdeki tüm alanlar ayrıdır ve sayılar veya karakterler için biçimlendirme koşullarını belirtir.

C'de biçimlendirilmiş printf çıktısının kendine has özellikleri vardır. Listelenen bağımsız değişkenlerin sayısı, biçim belirtimlerinin sayısını aşarsa, bunlar atlanır ve görüntülenmez. Aksi takdirde, yazdırılacak argümanlar listesindeki değerlerden daha fazla format özelliği varsa, işlev çağrısının sonucu tanımsızdır.

Sayı ile hangi argümanın kullanılması gerektiğini açıkça belirtmek için, "%" yerine "% m $" ve "*" yerine "* m $" kullanılabilir ve bir tamsayı ondalık değer olan m, konumunu belirtir. gerekli argüman (dizin oluşturma birden başlar) ...

Seçenekler

Biçim dizesinde kullanılan bayraklar
bayrakAçıklama
- Çıktı kutusundaki sonucu sola hizala
+ İşaretli bir sayısal değer görüntülenirken, pozitif bir değerin önüne bir "+" yazdırılmaya zorlanır (varsayılan olarak, negatif bir değerin önünde yalnızca bir "-" görüntülenir)
0 Tamsayılar ve kayan noktalı sayılar için, bir sayının uzunluğundan daha büyük bir alan genişliği belirtildiğinde sol basamakları doldurmak için boşluklar yerine baştaki sıfırlar kullanılır. Tamsayılar için, kesinlik açıkça belirtilirse bayrak yoksayılır. Bu bayrağı kullanan diğer dönüşümler için işlevin davranışı tanımsızdır. "-" bayrağı varsa "0" bayrağı yoksayılır
Uzayİşaretli bir ifadenin çıktısının sonucu bu işaretin karakteriyle başlamıyorsa veya boşsa sonuca bir boşluk eklenir. "+" işareti varsa "boşluk" bayrağı yoksayılır
# Alternatif dönüştürme biçimi devam ediyor

Çeşitli biçim belirteçleri

Biçim belirteciprintf C için Kullanım ve Açıklamaargüman türü
% Değişmez giriş "%"
CBir karakter görüntüler. Argüman, imzasız karakter tipine dönüştürülür. "l" değiştiricisini kullanırken, argüman bir karakter dizisine dönüştürülürimzasız karakter
sBir dizi karakter yazdırır. Argüman, char dizisinin başlangıç ​​öğesinin bir göstergesi olmalıdır.karakter *
NS
ben
İşaretli bir tamsayı değerinin ondalık gösterimini yazdırint
Öİşaretsiz sekizlik tamsayı değerini gösterimzasız int
x
x
İşaretsiz bir tamsayı değerinin onaltılık gösterimini verir. "a", "b", "c", "d", "e", "f" karakterleri "x"i dönüştürmek için kullanılır. Ve "X" - "A", "B", "C", "D", "E", "F" dönüştürmek içinimzasız int
senİşaretli bir tamsayı değeri olmadan ondalık bir dönüştürme verir. Dönüştürülen değer ve hassasiyetin her ikisi de 0 ise, hiçbir karakter çıktısı alınmaz.imzasız int
F
F
İmzalı bir kayan noktalı sayının ondalık gösterimini görüntülemeçift
e
E
Ondalık üstel gösterimin çıktısı, ondalık noktadan önce bir basamak bırakılacak ve ondalık noktadan sonraki basamak sayısı gösterimin kesinliğine karşılık gelecek şekilde yuvarlanır ve dönüştürülür (varsayılan olarak, hassasiyet 6'dır ve 0 belirtilirse, o zaman virgül karakteri hiç çıkmıyor). Dönüşüme bağlı olarak "e" karakteri büyük veya küçük harf olarak görüntülenir.çift
a
A
Bir kayan noktalı sayının onaltılık gösterimini görüntülemeçift
G
G
Değere ve kesinliğe bağlı olarak bir kayan noktalı sayının ondalık gösterimini veya ondalık üstel gösterimini görüntüleyinçift
nprintf tarafından yazdırılan öğelerin sayısını döndürür. Sonuç, argümanın işaret ettiği değişkene yazılır. Malzeme Listesi hiçbir bayrak, alan genişliği veya kesinlik içermeyebilirint *
Pişaretçi çıkışıgeçersiz *

Alan genişliği değiştiricisi

printf C'deki format dizesi, yüzde işaretinden sonra ve format komutundan önce bir tamsayı içerebilir. Alan genişliğini değiştirir ve görüntülenen verilerin sunumunu etkiler. Bir değere yönelik en küçük alan genişliği bu sayı ile belirlenir ve böyle bir değiştiricinin varlığı, argüman kendisine tahsis edilen alandan küçükse, sonuca boşluk veya sıfır eklenmesine neden olur. Varsayılan yer tutucu bir boşluk karakteridir, ancak genişlik belirtimi ile önek ekleyerek onu sıfıra ayarlayabilirsiniz. Değiştirici, minimum genişliği belirtir ve bu minimumu aşan herhangi bir değer, karışıklık olmadan yazdırılacaktır. Örneğin, sekiz karakterden az olan ve "% 08d" belirtimi ile yazdırılan bir sayı, gerekli sekiz karaktere sıfırlarla doldurulacaktır.

Bu tür değiştiriciler ayrıca kesinlik veya hizalama seçeneklerini de belirleyebilir.

doğruluk değiştirici

Hassas değiştirici, sayısal gösterimde yazdırılacak ondalık basamak sayısını belirlemek için kullanılır. Bir duyarlık değiştirici eklemek için, alan genişliği belirtiminden sonra bir nokta koymanız ve ondan sonra istenen kesinlik değerini belirtmeniz gerekir. Kesinlik değiştirici "e", "f", "a", "E", "A" ve "F" biçimleri için tanımlanmıştır. Tamsayılar için değiştirici, gerekirse sol basamağa sıfır ekleyerek görüntülenen basamak sayısını ayarlar ve rasyonel sayıları görüntülerken gerekli ondalık basamak sayısını belirler. Dize değişkenleriyle ilgili olarak: kesinlik değiştiricide noktayı takip eden sayı, çıktıdaki maksimum alan uzunluğunun bir belirleyicisi olarak işlev görür. Örneğin, "% 4.8s" biçim belirtimi verildiğinde, uzunluğu dört ila sekiz karakter arasında olan bir dize çıkarılacak, aşılırsa uç karakterler atlanacaktır.

Diğer biçim değiştiriciler

Varsayılan hizalama sağa hizalamadır, ancak bu, "%" işaretinden sonra "-" koyarak değiştirilebilir. Bu biçim belirtimi sola hizalamayı ayarlar.

Ayrıca printf işlevi, yazdırılacak tamsayı değerlerinin kısa ve uzun türleri arasında ayrım yapma yeteneğine sahiptir. Geçerli belirteçler "o", "d", "u", "i", "x" ve "X" dir. Uzun değer türü "l" değiştiricisi ile, kısa değer türü "h" değiştiricisi ile ayarlanır. Örneğin, uzun bir tamsayı ve kısa bir işaretsiz int yazdırırken, biçim belirtimleri sırasıyla "% ld" ve "% hu" gibi görünür.

Örnekleri

1. printf C'nin tanımı ve her bir işlevi çağırmanın sonuçları:

2. Basit bir iletişim mesajı görüntüleme:

printf ("mesaj");

3. Program kodu:

Biçim belirtimlerinin önünde belirtilen ifadeler, biçim dizesini izleyen argümanların yanı sıra ekrana yazdırılır. Yukarıdaki printf C işlevlerinin yürütülmesinin sonucu, çıktı verilerinin açıklaması:

Bu örnek, çeşitli dizgi biçimleri, tamsayı değişkenleri, karakterler ve kayan nokta sayıları kullanılarak görüntülemeyi gösterir.

scanf standart giriş işlevi ve kullanım örnekleri

scanf işlevi klavye girişini okumak için kullanılır. C'deki printf ve scanf'in açıklaması için, "stdio.h" başlık dosyasına bakın.

scanf ("biçim belirteçleri", & değer1, & değer2, ...);

scanf işleviyle çalışmanın basit bir örneği:

#Dahil etmek

Bir dize, değişken değeri veya ifade çıktısı verir.
Sözdizimi:

Yazdır (string arg)

print() işlevi, değişken veya ifade olabilen arg argümanını yazdırır.

vsprintf ()

Biçimlendirilmiş bir dize döndürür (PHP 4> = 4.1.0, PHP 5)

Açıklama:

String vsprintf (dize formatı, dizi argümanları)

Bu işlev sprintf() işlevine benzer, ancak değişken sayıda argüman almaz, bir dizi alır.

Bir veya daha fazla değer yazdırır.
Sözdizimi:

Yankı (string arg1, string ...)

echo() işlevi, listelenen parametrelerin değerlerini görüntüler.
echo () aslında bir dil yapısıdır, bu nedenle birden çok argüman kullanılsa bile bunun için parantez gerekmez.
echo "Koddaki bir satır sonu kaydedilir ve çıktıda kullanılır."
"bu kullanımdan kaçınmak için".
"birleştirme operatörü";

Biçimlendirilmiş bir dize çıktısı alın.
Sözdizimi:

Int printf (dize biçimi [, karışık argümanlar, ...]);

Sonuç dizesinin döndürülmemesi, ancak kullanıcının tarayıcısına gönderilmesi dışında sprintf () ile aynı şeyi yapar.

Değişken ikamesi ile dize biçimlendirmesi gerçekleştirir.
Sözdizimi:

Sprintf ($ biçimi [, bağımsız değişkenler, ...])

Bu işlev, daha sonra bağımsız değişken listesinden karşılık gelen değişkenlerin değerleriyle değiştirilecek olan bazı özel karakterleri içeren bir biçim dizesine dayalı bir dize döndürür.
$ biçim biçimi dizesi, bir % karakterinin önüne geçen biçimlendirme komutlarını içerebilir.
Diğer tüm karakterler çıktı dizesine olduğu gibi kopyalanır. Her biçim belirteci (yani, komutların izlediği % karakteri), $ biçimi parametresinden sonra belirtilen yalnızca bir parametreyle eşleşir. Metne normal bir karakter olarak % koymanız gerekiyorsa, onu ikiye katlamanız gerekir:

Echo sprintf ("Yüzde, %d %% idi", $ yüzde);

Her biçim belirtecinin en fazla beş öğesi vardır (% karakterinden sonra göründükleri sırayla):

Görüntülenen değer için kaç karakter ayrılacağını belirten isteğe bağlı bir alan boyutu belirteci.
Yer tutucu olarak (değer, görüntülenecek alanın boyutundan küçükse)
boşluk veya 0 kullanılabilir, varsayılan değer boşluktur. Başında bir kesme işareti bulunan biçim dizesinde belirterek başka herhangi bir dolgu karakteri belirtebilirsiniz.
Sonucun sağa mı yoksa sola mı hizalanacağını belirleyen isteğe bağlı bir hizalama belirteci. Varsayılan hizalama sağdır, ancak - (eksi) sembolünü belirterek sola hizalamayı da belirtebilirsiniz.

Değerin görüntüleneceği alanın boyutunu belirten isteğe bağlı bir sayı. Sonuç sahada değilse, bu alanın kenarlarının ötesine "sürünecek", ancak kesilmeyecektir.
Başında bir nokta olan isteğe bağlı bir sayı, Sonuç dizesinde kaç ondalık basamak olacağını belirtir.
Bu belirteç, yalnızca bir kayan noktalı sayı çıktısı alındığında dikkate alınır, aksi takdirde yoksayılır.
Son olarak, çıktı satırına yerleştirilecek gerekli (not - tek gerekli!) Değer türü belirteci:

b - listeden sonraki bağımsız değişken ikili tamsayı olarak görüntülenir
c - bağımsız değişkende belirtilen koda sahip sembol görüntülenir
d - tam sayı
f - kayan nokta sayısı
o - sekizlik tam sayı
s - karakter dizisi
x - küçük harfler a-z olan onaltılık tam sayı
X, A-Z büyük harfleri olan onaltılık bir tamsayıdır

Kayan noktalı sayıların kesinliğini şu şekilde belirleyebilirsiniz:

$ para1 = 68,75;
$ para2 = 54.35;
$ para = $ para1 + $ para2;
// echo $ para "123.1" yazdıracak ...
$ biçimlendirilmiş = sprintf ("% 01.2f", $ para);
// echo $ biçimlendirilmiş "123.10" yazdıracak!

Burada, önünde gerekli sayıda sıfır bulunan bir tamsayı çıktısının bir örneği verilmiştir:

$ isodate = sprintf ("% 04d-% 02d-% 02d", $ yıl, $ ay, $ gün);

Dizeyi formata göre yorumlar ve değerleri değişkenlere ayarlar.

Sözdizimi:

Karışık sscanf (dize dizesi, dize biçimi [, dize var1 ...])

sscanf() işlevi, printf() işlevinin tersidir.

printf() belirtimine benzer şekilde, str dizesini biçime göre yorumlar.

Yalnızca iki argüman belirtilirse, elde edilen değerler bir dizide döndürülür.

// seri numarasını al $ serial = sscanf ("SN / 235-0001", "SN /% 3d-% 4d");
echo $ seri * 10000 + $ seri; // çıkışlar: 2350001
// ve üretim tarihi $ tarih = "01 Ocak 2000";
list ($ ay, $ gün, $ yıl) = sscanf ($ tarih, "% s% d% d");
echo "Tarih: $ yıl -".substr ($ay, 0,3). "- $ dayn";
// çıktı: 2000-Ocak-01

Ek isteğe bağlı parametreler belirtilirken (referans yoluyla iletilmelidirler)

fonksiyon onların numarasını döndürür. Değer almayan değişkenler dönüş değerine dahil edilmez.

// dizeden XML kaydı oluştur $ auth = "765tLewis Carroll";
$ n = sscan ($ auth, "% dt% s% s", & $ id, & $ ilk ve $ son);
Eko "
$ birinci
$ son
n ";

fprintf ()

Açıklama:

Int fprintf (kaynak tanıtıcı, dize biçimi [, karışık bağımsız değişkenler])

Tutamacı işlemeye geçirilen akışa biçim dizesi biçimi kullanılarak oluşturulmuş bir dize yazar. Format argümanı, sprintf () fonksiyonunun açıklamasında ayrıntılı olarak tartışılmaktadır.

fprintf (): sıfırlarla doldurma


dönüş;

fprintf ($ fp, "% 04d-% 02d-% 02d", $ yıl, $ ay, $ gün);
// formatlanan tarihi date.txt dosyasına yazacak
?>

fprintf (): para birimi değerlerini biçimlendirme

if (! ($ fp = fopen ("currency.txt", "w")))
dönüş;

$ para1 = 68,75;
$ para2 = 54.35;
$ para = $ para1 + $ para2;
// echo $ para "123.1" yazdıracak;
$ len = fprintf ($ fp, "% 01.2f", $ para);
// "123.10" dizesi para birimi.txt dosyasına yazılır

echo "para birimi.txt dosyasına yazılan $ len bayt";
?>

vfprintf ()

Bir akışa biçimlendirilmiş bir dize yazar (PHP 5)

Açıklama:

Int vfprintf (kaynak tanıtıcı, dize biçimi, dizi bağımsız değişkenleri)

Handle tarafından belirtilen akış kaynağına formatla biçimlendirilmiş bir dize yazar. Biçimlendirme, sprintf() işlevine benzer.

fprintf () ile aynı şekilde çalışır, ancak değişken sayıda bağımsız değişken değil, bir dizi bağımsız değişken alır.

Çıktı dizesinin uzunluğunu döndürür.

Ayrıca bakınız: printf(), sprintf(), sscanf(), fscanf(), vsprintf() ve number_format().
Örnekler

vfprintf (): sıfır dolgulu tam sayılar

if (! ($ fp = fopen ("date.txt", "w")))
dönüş;

vfprintf ($ fp, "% 04d-% 02d-% 02d", dizi ($ yıl, $ ay, $ gün));
// biçimlendirilmiş ISO tarihini date.txt'ye yazacak
?>

vprintf ()

Biçimlendirilmiş bir dize çıktısı verir (PHP 4> = 4.1.0, PHP 5)

Açıklama:

Int vprintf (dize biçimi, dizi bağımsız değişkenleri)

sprintf () işlevinin belgelerinde açıklanan biçim bağımsız değişkenine göre biçimlendirilmiş args dizisinin değerlerini çıkarır.

Bu işlev printf() işlevine benzer, ancak değişken sayıda argüman almaz, bir dizi alır.

Çıktı dizesinin uzunluğunu döndürür

sayı_format ()

Bir sayıyı ayrı gruplarla biçimlendirir (PHP 3, PHP 4, PHP 5)

Açıklama:

String number_format (kayan sayı [, int ondalık sayılar])

string number_format (kayan sayı, int ondalık sayılar, string dec_point, string binler_sep)

sayı_biçimi (), biçimlendirilmiş sayı numarasını döndürür. İşlev bir, iki veya dört argüman alır (üç değil):

Yalnızca bir argüman iletilirse, sayı kesirli kısım olmadan, ancak 3'lü gruplar arasında virgül (",") ile biçimlendirilir.

İki bağımsız değişken iletilirse, sayı bir noktadan (".") sonra ondalık sayılar ve 3'lü basamak grupları arasında noktalı virgül (",") ile biçimlendirilir.

Dört bağımsız değişkenin tümü iletilirse, sayı noktadan sonra ondalık sayılarla ve 3'lü gruplar arasında bir ayırıcıyla, ondalık nokta olarak ondalık_noktası ve grup ayırıcısı olarak bin_ayır kullanılarak biçimlendirilir.

Bin_sep dizesinin yalnızca ilk karakteri kullanılır. Örneğin, 1000'i biçimlendirmek için foo'yu bin_sep olarak iletirseniz, sayı_biçimi () 1f000 değerini döndürür.

number_format () kullanan örnek

Fransa'da 2 ondalık basamak (",") yaygın olarak kullanılır ve grup ayırıcı olarak bir boşluk ("") kullanılır. Bu biçimlendirme aşağıdaki kod kullanılarak elde edilir:

$ sayısı = 1234.56;

// İngilizce biçimi (varsayılan)
$ english_format_number = sayı_format ($ sayı);
// 1,234

// fransız formatı
$ nombre_format_francais = sayı_format ($ sayı, 2, ",", "");
// 1 234,56

$ sayısı = 1234.5678;

// grup ayırıcılar olmadan İngilizce formatı
$ english_format_number = sayı_format ($ sayı, 2, ".", "");
// 1234.57

PHP sprintf işlevi, tek bir karakter dizgisine bir dizi argümanı dönüştürmenize ve yerleştirmenize izin verir. Biçim belirteçleri karakterler, dizeler, tam sayılar ve gerçek sayılarla çalışmanıza olanak tanır.

İşlevin kullanımı, tablo bilgilerini biçimlendirmek ve şablonlar oluşturmak için talep edilmektedir. İçeriğini veya sırasını değiştirerek, belirli bir yapıdaki ilk verilerin ön resmileştirilmesi için kullanılabilir.

PHP sprintf () işlev sözdizimi

İşlevin sonucu, işlevin parametreleri olan belirli verilerden belirli bir sırayla oluşturulmuş bir karakter dizisidir:

  • biçim dizesi;
  • argüman listesi.

HTML etiketleri dahil, biçimlendirme için herhangi bir yapı ve mantık kullanılabilir. sprintf kullanımında herhangi bir kısıtlama olmamasına rağmen, PHP kılavuzu, dönüşüm belirteçlerini daha çok sayısal bir bilgi olarak tanımlar.

Biçim öğesi bir % karakteri ile başlar ve bir belirteç karakteri ile biter. Biçimlendirme yeteneklerinin çoğu sayısal bilgi alanındadır. Bir sayıyı ikili ve onaltılık biçimlere dönüştürebilmek çok pratiktir. Burada PHP'deki sprintf işlevleri yerine yenisini yazmaya değmez.

Yukarıdaki örnek, argüman adlandırma kuralını ve x ve X belirteci arasındaki farkı vurgulamaktadır.Biçimlendirilmiş argüman dizisine yapılan referansların doğru kullanımı, doğru sonuç için önemlidir. Numaralandırma her zaman 1'den başlar.

Bağlantıların kullanılma sırası önemli değildir, ancak şunu hatırlamak önemlidir: PHP sprintf işlevi, genel listedeki tüm % öğelerini (argüman numarasını belirtmeden) sırayla dikkate alır. Genel listenin numaralandırılmasının, belirli parametre numaralarıyla belirtilen % öğelerin sayısı veya sırası ile ilgisi yoktur.

PHP'de sprintf kullanımına ilişkin bir örnek açıklama

Argümanı bir dize biçiminde kontrol etmek için doğrudan bir olasılık yoksa, biçim dizesini kontrol etmek ve sonuç dizesine dijital bilgi vermek sorun değildir.

Örneğin ilk iki satırında (Arg1, Arg2c ve Arg2p bağımsız değişkenlerini görüntüleyen), ilk bağımsız değişken dizedir (konum adı) olduğu gibi görüntülenir. Üçüncü argüman çıktıda 12 (14) karakter alır. İlk satır, sayıyı toplam 12 karakter uzunluğunda sıfırlarla sola hizalar. Noktadan sonra dört karakter vardır. İkinci satır, sayıyı sağa (kesirli kısım) 14 karaktere hizalar. Sağa hizalamanız gereken işaret - sembolüdür.

Biçim dizgisi normal bir karakter dizgisidir. Hesaplanan ifadeler içine eklenebilir. Bu durumda, başka bir sayıyı vurgulamak için ekler ($ cL) ve ($ cR) kullanıldı. Bu, biçimlendirme dizesini daha net ve tüm örneklerde yazmayı kolaylaştırdı.

Formasyon dizesi biçimlendirmesi

Rusça PHP çalışması veya sprintf işlevi, yorumlayıcının doğal ve kullanışlı bir ortamda yaptığı çalışmadır. Aslında, PHP kodu eklenmiş bir HTML sayfası, herhangi bir dilde herhangi bir bağlamı temsil eder. Bu, JavaScript'in tarayıcı ortamında sağladığı özgürlük değildir.

PHP'de Rusça içeriği görüntülemek için Kiril alfabesini kodlamanız gerekmez, ancak bazen iconv () dönüştürme işlevini kullanmanız gerekir. Her durumda, her şey erişilebilir ve okunabilir.

PHP kodunu bir HTML sayfasına eklemek için kullanılan metin anlaşılır ve talep görmektedir. Karakter dizisindeki uygulama:

Değişken değeri ABC = ($ ABC) birimleri

($ ABC) eki yalnızca bir kez önemlidir ve ayrıca yalnızca bir kez gerçekleştirilir.

Bir sayfada PHP kod yürütme özelliği

Tercüman sadece bir kere sayfayı görüntüler ve sadece bir kere ekleri ($ ABC) değerleriyle değiştirir. Programcı, kendi takdirine bağlı olarak şu ifadeyi kullanabilir: "sadece bir kere", PHP'yi istenen sonuca defalarca yaklaşmaya zorlamak.

Her durumda, HTML sayfası tarayıcıya gönderildiğinde, içinde PHP kodu yoktur.

Tarayıcıdan bir sayfa öğesi sunucuyla iletişim kurduysa, yeni bir PHP betiği çalıştırabilir. Buradaki eklemeler ($ ABC) oldukça görecelidir ve sonucun doğru olacağının garantisi yoktur. Ancak PHP'de sprintf kullanımı böyle bir olasılığın dinamiğidir.

Geliştirici, böyle bir ekin yalnızca istenen uygulamasını elde etmekle kalmaz, aynı zamanda istenen değeri ileteceği dizeyi de değiştirir.

İçerik oluşturma anı

PHP'nin potansiyelini, bir bütün olarak bir sayfa oluşturmak için bir araç olarak, bir HTML sayfasına eklemeler oluşturmanın bir aracı olarak kullanmak doğaldır. Burası sitenin başladığı yer. Sayfa oluşturulur oluşturulmaz ve aslında siteye bir ziyaretçi geldi, ardından modern konseptlere göre:

  • sayfa değiştirilemez;
  • özlenecek kullanıcı fazla yasaktır.

Aslında siteye bir ziyaretçi geldi ve ilk yanıtı HTML kodu şeklinde aldı. Bu cevabı değiştirmek tamamen yanlıştır - ziyaretçiye sayfanın onu değiştirdiğini söylemek anlamına gelir. Ancak sayfa, ziyaretçinin eylemlerine yeterince ve inisiyatifiyle tepki vermekle yükümlüdür.

Bir ziyaretçinin gelişi ilk tepkidir. Ziyaretçi Eylemi - Bir sayfanın tüm beklenen sonraki ziyaretçi eylemleri için yeterli yanıtı ve hazırlığı.

Ziyaretçinin inisiyatifinde sayfanın dinamiklerine ilişkin sorumluluğun önemli bir payı JavaScript'e düşer, ancak yalnızca tarayıcıda çalışır ve sunucuya yalnızca AJAX istekleri gönderebilir. Sunucuya yapılan her çağrı bir PHP betiği çalıştırabilir. Ancak sayfa oluşturma anı ve talebe tepki verme anı önemli ölçüde farklılık gösterir.

PHP'nin sprintf işlevi, bir yanıtı dinamik olarak zamanlamak ve istenen değerle doldurmak için idealdir.

Çalışma zamanında PHP kodunu değiştirme

Kod dinamiği fikri ilk programlama dili ile doğmuştur ve günümüzde her modern programlama dilinde mevcuttur.

Eval (bir kod satırı) ile kod yürütmek bugün bir güvenlik açığı olarak kabul edilir, ancak tehlikeli olduğu kadar yararlıdır.

Çalışma zamanında kodunuzu değiştirmek için bugün eval () işlevini kullanmanız gerekmez. Doğru dinamikleri oluşturmak için pratik bir temelden ziyade hızlı bir kahvaltı, bir veya iki komut.

PHP sprintf () işlevi, belirli bir ziyaretçi eylemi üzerine çağrılacak bir nesne kodu gibi bir komut dosyası şablonu tasarlamanıza olanak tanır. Nesnelerin gövdelerini bağımsız dosyalar biçiminde kaydetmeye yönelik yerleşik uygulama, sitenin çalışması sırasında bunları değiştirmek için ideal bir çözümdür.

sprintf () işlevini tamamlayan araçların kullanımı, yalnızca belirli bir ziyaretçinin eylemleri sonucunda kullanılan nesneleri değiştirmeye değil, aynı zamanda bu dinamikleri diğer ziyaretçilerle çalışmak için aktarmaya da izin verir: bu, sitenin gelişimidir. , işlevselliğinin dinamikleri, iş deneyimi ve bilgi birikimi.

(PHP 4, PHP 5, PHP 7)

sprintf - Biçimlendirilmiş bir dize döndürür

Parametre Listesi

Biçim dizgisi sıfır veya daha fazla yönergeden oluşur: sıradan karakterler (bunun dışında % ), doğrudan elde edilen dizeye kopyalanır ve dönüşüm tanımlayıcıları, her biri parametrelerden biri ile değiştirilir. Bu her ikisi için de geçerlidir sprintf () ve yazdır ().

Her dönüşüm belirteci bir yüzde işaretinden ( % ) ardından bir veya daha fazla ek öğe (burada listelendikleri sırayla):

  1. İsteğe bağlı karakter tanımlayıcı numaraya nasıl bir işaretin (- veya +) uygulanacağını gösterir. Varsayılan olarak, sayı negatifse yalnızca eksi işareti kullanılır. Bu belirteç, pozitif sayıların da artı işareti göstermesine neden olur ve PHP 4.3.0'da eklenmiştir.
  2. İsteğe bağlı dolgu belirteci sonucu gerekli uzunlukta doldurmak için hangi karakterin kullanılacağını belirler. Bir boşluk olabilir veya 0 ... Varsayılan bir boşluktur. Tek bir alıntı kullanılarak alternatif bir karakter belirtilebilir ( " ). Aşağıdaki örneklere bakın.
  3. İsteğe bağlı hizalama belirteci bu, sol veya sağ hizalamayı belirtir. Varsayılan olarak haklı haklı, - sola hizalama için kullanılır.
  4. Opsiyonel numara, genişlik belirteci, bu dönüşümün sonucunu içerecek minimum karakter sayısını belirtir.
  5. İsteğe bağlı kesinlik belirteci nokta (".") olarak belirtilir, ardından kayan nokta sayıları için kaç ondalık basamak görüntüleneceğini belirten isteğe bağlı bir ondalık dize. Dizelerle kullanıldığında, bu belirteç, maksimum karakter sınırını ayarlayan bir kırpma noktası görevi görür. Nokta ile rakam arasındaki bir sayıyı tamamlarken kullanılan karakteri de belirtebilirsiniz.
  6. Tür belirteci bu, argümanın veri türünün nasıl yorumlanacağını belirler. Geçerli türler:

    • % - yüzde sembolü. Argüman kullanılmaz.
    • B- bağımsız değişken bir tamsayı olarak ele alınır ve bir ikili sayı olarak çıkarılır.
    • C- bağımsız değişken bir tamsayı olarak ele alınır ve uygun ASCII koduna sahip bir karakter olarak görüntülenir.
    • NS- bağımsız değişken bir tamsayı olarak ele alınır ve işaretli bir ondalık sayı olarak görüntülenir.
    • e- argüman, bilimsel gösterimde bir sayı olarak ele alınır (örneğin, 1.2e + 2). Kesinlik belirteci, ile başlayan ondalık basamak sayısını belirtir. PHP sürümleri 5.2.1. Daha fazlası erken sürümlerönemli basamakların sayısını belirtir (bir eksi işareti).
    • E- benzer şekilde % e ancak büyük harf kullanır (ör. 1.2E + 2).
    • F- bağımsız değişken bir kayan noktalı sayı olarak değerlendirilir ve ayrıca yerel ayara bağlı olarak çıktı olarak verilir.
    • F- bağımsız değişken kayan noktalı bir sayı olarak değerlendirilir ve ayrıca görüntülenir, ancak yerel ayara bağlı değildir. PHP 4.3.10 ve PHP 5.0.3'ten beri mevcuttur.
    • G % e ve % F.
    • G- arasından en kısa girişi seçer % E ve % F.
    • Ö- bağımsız değişken bir tamsayı olarak değerlendirilir ve sekizli bir sayı olarak görüntülenir.
    • s- argüman bir dize olarak ele alınır.
    • sen- bağımsız değişken bir tam sayı olarak değerlendirilir ve işaretsiz bir ondalık sayı olarak görüntülenir.
    • x- bağımsız değişken bir tamsayı olarak ele alınır ve onaltılık bir sayı olarak görüntülenir (küçük harfle).
    • x- bağımsız değişken bir tamsayı olarak ele alınır ve onaltılık bir sayı olarak görüntülenir (büyük harfle).

Değişkenler, belirteç için uygun türe dönüştürülecektir:

Tip işleme
Bir çeşit belirleyici
sicim s
tam sayı NS, sen, C, Ö, x, x, B
çift G, G, e, E, F, F

Dikkat

Karakter başına birden fazla bayt gerektiren kodlamalarla dizeler ve genişlik belirteçleri kombinasyonunu kullanmaya çalışmak beklenmedik sonuçlara yol açabilir.

Biçim dizesi, parametrelerin numaralandırılmasını ve yeniden sıralanmasını destekler. Örneğin:

Örnek # 1 Parametrelerin sırasını değiştirme

$ sayı = 5;
$ konum = "ağaç";

$ biçimi = "% d maymunlar % s üzerinde oturuyor";

?>

Bu kod "bir ağaçta 5 maymun oturuyor" yazacaktır. Şimdi biçim dizesinin içerdiğini hayal edin ayrı dosya, daha sonra başka bir dile çevrilecek ve bu biçimde yeniden yazacağız:

Örnek # 2 Parametrelerin sırasını değiştirme

$ biçimi = "% D maymunları % s üzerinde oturuyor";
echo sprintf ($ biçimi, $ sayı, $ konum);
?>

Bir sorun ortaya çıkıyor: dönüştürme tanımlayıcılarının sırası, bağımsız değişkenlerin sırasına uymuyor. Kodu değiştirmek istemiyoruz ve bu veya bu dönüşüm tanımlayıcısının hangi argümana karşılık geldiğini belirtmemiz gerekiyor.

Örnek # 3 Parametrelerin sırasını değiştirme

$ biçimi = "% 1 $ d maymun % 2 $ s üzerinde oturuyor";
echo sprintf ($ biçimi, $ sayı, $ konum);
?>

Argüman numaralandırmanın başka bir kullanımı daha vardır: fonksiyona ek parametreler iletmeden aynı argümanı birden çok kez yazdırmanıza izin verir.

Örnek # 4 Parametrelerin sırasını değiştirme

$ biçimi = "% 1 $ d maymun % 2 $ s üzerinde oturuyor.
% 1 $ d maymunun % 2 $ s üzerinde oturması harika."
;
echo sprintf ($ biçimi, $ sayı, $ konum);
?>

Parametrelerin sırasını değiştirirken pozisyon tutacağı n $ yüzde işaretinden hemen sonra gitmelidir ( % ) aşağıdaki örnekte gösterildiği gibi diğer tüm tanımlayıcılardan önce.

Örnek # 5 Bir dolgu karakteri belirtme

echo sprintf ("%". 9d \ n ", 123);
echo sprintf ("%". 09d \ n ", 123);
?>

123 000000123

Örnek # 6 Konum tanımlayıcıyı ve diğer tanımlayıcılarla birlikte kullanma

$ biçimi = "% 1 $ 04d maymun % 2 $ s üzerinde oturuyor";
echo sprintf ($ biçimi, $ sayı, $ konum);
?>

Bu örneğin sonucu:

Ağaçta oturan 0005 maymun var

Yorum Yap:

Şundan daha büyük bir konum belirteci kullanmaya çalışmak PHP_INT_MAX, işlev tarafından bir uyarı oluşturulmasına neden olur sprintf () .

Dikkat

NS C tür belirteci dolguyu ve genişliği yok sayar

Dönüş değerleri

Biçim dizesine göre biçimlendirilmiş bir dize döndürür.

Örnekleri

Örnek # 7 sprintf (): sıfırlarla doldurulmuş

$ n = 43951789;
$ u = - 43951789;
$c = 65; // ASCII 65 "A"dır

// not, çift %% tek "%" olarak görüntüleniyor
printf ("%% b ="% b "\ n", $ n); // ikili gösterim
printf ("%% c ="% c "\ n", $ c); // chr () işleviyle aynı olan ascii karakterini yazdırır
printf ("%% d ="% d "\ n", $ n); // normal tamsayı
printf ("%% e ="% e "\ n", $ n); // bilimsel gösterim
printf ("%% u ="% u "\ n", $ n); // pozitif bir sayının işaretsiz tamsayı gösterimi
printf ("%% u ="% u "\ n", $ u); // bir negatif sayının işaretsiz tamsayı gösterimi
printf ("%% f ="% f "\ n", $ n); // kayan nokta gösterimi
printf ("%% o ="% o "\ n", $ n); // sekizlik temsil
printf ("%% s ="% s "\ n", $ n); // hat
printf ("%% x ="% x "\ n", $ n); // onaltılık gösterim (küçük harf)
printf ("%% X ="% X "\ n", $ n); // onaltılık gösterim (büyük harf)

Printf ("%% + d ="% + d "\ n", $ n); // tanımlayıcıyı pozitif tamsayı ile işaretle
printf ("%% + d ="% + d "\ n", $ u); // belirteci negatif tamsayı ile işaretle
?>

Bu örneğin sonucu:

% 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 # 8 yazdır (): satır tanımlayıcıları

$s = "maymun";
$ t = "birçok maymun";

Printf ("[% s] \ n", $ s); // normal hat çıkışı
printf ("[% 10s] \ n", $ s); // boşluklarla sağa yaslama
printf ("[% -10s] \ n", $s); // boşluklarla sola hizalama
printf ("[% 010s] \ n", $ s); // sıfır doldurma ayrıca dizelerle de çalışır
printf ("[%" # 10s] \ n ", $ s); // kendi dolgu karakterinizi "#" kullanın
printf ("[% 10.10s] \ n", $ t); // 10 karakter kesilerek sola yaslama
?>