Php eilutės formatavimas. Sprintf – grąžina suformatuotą eilutę. PHP sprintf() funkcijos sintaksė

Dėl suformatuota išvestis PHP Naudojamos dvi puikios funkcijos: printf() Ir sprintf (). Jie turi gana daug galimybių, kurias aptarsime šiame straipsnyje.

Iš karto pasakysiu, kad skirtumas tarp printf() Ir sprintf () tik kad pirmasis išveda eilutę tiesiai į išvesties srautą (pavyzdžiui, į naršyklę), o antrasis ją grąžina.

Funkcijos parametras yra eilutė, kuri turi simboliai su %, vadinami specifikatoriais, Ir simboliai be %, vadinami direktyvomis. Formatuojant direktyvos lieka nepakitusios, tačiau specifikacija pakeičia kitus funkcijos parametrus (po formato eilutės).

Yra keletas specifikacijų, kurios yra sujungtos į vieną grupę (viena bendra % ), kurios tvarka yra tokia:

  1. Pamušalo specifikacija. Leidžia užpildyti eilutę iki nurodyto dydžio konkrečiu simboliu. Pagal numatytuosius nustatymus šis simbolis yra tarpas.
  2. Lygiavimo specifikacija. Ši specifikacija leidžia nustatyti linijos lygiavimą į dešinę (pagal numatytuosius nustatymus) arba į kairę (jei nurodote " - ").
  3. Minimalaus pločio specifikacija. Jei rezultato eilutės ilgis yra trumpesnis, jis bus užpildytas simboliais nuo užpildymo specifikacijos iki nurodyto pločio.
  4. Tikslumo konkretizatorius. Leidžia nurodyti, kiek skaičių po kablelio palikti slankaus kablelio skaičiui.
  5. Tipo specifikatorius. Šis specifikatorius nurodo išvestinų duomenų tipą. Jų yra 8, tačiau praktikoje naudojami šie:
    • d- sveikasis skaičius dešimtaine forma.
    • f- slankaus kablelio skaičius dešimtaine forma.
    • s- linija.

Pažvelkime į klasiką suformatuotos datos išvedimo pavyzdys:

$ metai = 2012;
$mėnuo = 9;
$diena = 28;
printf("Parašymo data: %02d.%02d.%04d", $diena, $mėnuo, $metai);
?>

Nesunku atspėti, kad rezultatas bus tokia eilutė: " Straipsnio parašymo data: 2012-09-28". Atkreipkite dėmesį, kiek specifikacijų grupių, tiek parametrų perduodama be paties formato. Eilutę " Straipsnio parašymo data:“ yra direktyva, ir ji lieka nepakitusi. Dabar kaip pavyzdį pažiūrėkime į antrąją specifikatorių grupę, kuri yra atsakinga už mėnesį. Kitos grupės yra visiškai identiškos.

  • %
  • 0 - simbolis, kuriuo nurodytas parametras bus užpildytas iki reikiamo pločio.
  • 2 - minimalus plotis. Atitinkamai, jei eilutės ilgis yra mažesnis, ji bus užpildyta 0 .
  • d- bus išvesta kaip sveikasis skaičius. Jei įdėsite pvz. b(kitas tipo specifikatorius), tada bus rodomas tas pats skaičius, bet dvejetaine forma.

Pateiksiu dar vieną populiarų funkcijos printf (ir sprintf()) naudojimo pavyzdys susiję su apvalinimo skaičiais:

x $ = 12,596123;
printf("%06.2f", $x); // Bus rodomas "012.60".
?>

Pažiūrėkime į pirmąjį funkcijos argumentą printf():

  • % - specifikatorių grupės pradžia.
  • 0 - simbolis, kurį reikia užpildyti iki reikiamo ilgio.
  • 6 - reikalingas ilgis (taškas, žinoma, taip pat įskaičiuojamas į šį ilgį).
  • .2 - tikslumas iki 2 po kablelio.
  • f- slankaus kablelio skaičių tipas. Tiesą sakant, apvalinimas prasmingas tik šiam tipui.

Kaip matai, printf() ir sprintf() funkcijas palengvinti iš pažiūros sudėtingų problemų sprendimą. Todėl jūs tikrai turite juos turėti savo arsenale.

Standartinė konsolės išvesties funkcija C yra printf. Jo aprašymas yra stdio.h antraštės faile. Naudodami šią funkciją galite išvesti duomenis arba vartotojo pranešimus į konsolę. C kalba yra didžiosios ir mažosios raidės. Pavyzdžiui, dvi funkcijos printf ir scanf skiriasi nuo panašių funkcijų Printf ir Scanf. Visi simboliai printf ir scanf funkcijose taip pat turi būti rašomi mažosiomis raidėmis. Vienas iš paprasčiausių C printf, kuris spausdina pažįstamą sveikinimo pasaulį, pavyzdžių yra:

„Printf“ grupės funkcijų apibrėžimas faile „stdio.h“

Failas "stdio.h" nurodo standartinę įvesties/išvesties biblioteką C kalba. Printf ir panašių funkcijų aprašymas jame pateikiamas taip:

Išvardytos funkcijos įkelia duomenis iš tam tikrų vietų, konvertuoja juos į simbolių eilutę ir siunčia į nurodytus išvesties srautus.

Funkcijų printf šeima

Printf grupės funkcijos C kalba naudojamos duomenų išvesties į standartinį srautą apdorojimui ir formatavimui. Be to, funkcijos printf ir vprintf rašo į standartinį stdout srautą, funkcijos fprintf ir vfprintf siunčia išvesties argumentų reikšmes į tam tikrą nurodytą išvesties srautą, o snprintf, sprintf, vsnprintf ir vsprintf įrašo duomenis į simbolių eilutę. Visos išvardytos funkcijos veikia naudojant formato eilutę, nurodančią reikiamas išvesties argumentų konversijas.

Fprintf funkcija įrašo rezultatą į išvesties srauto srautą. Funkcija sprintf išveda rezultatą į buferį, kuris yra simbolių eilutė. Funkcijos veikimas neapibrėžtas, jei išvestina eilutė viršija buferio masyvo dydį.

Funkcija snprintf, kaip ir ankstesnė, įrašo duomenis į eilutės buferį. Gauta simbolių eilutė yra nulinė, nebent bufsz (buferio dydis) yra nulis. Priešingu atveju, jei bufsz yra nulis, tada į buferį nieko neišvedama, o pats buferis gali būti nulinis rodyklė, tačiau grąžinama reikšmė (baitų skaičius, kuris turėjo būti parašytas) vis tiek apskaičiuojama.

Funkcija printf_s iš esmės veikia taip pat kaip printf, išskyrus vieną dalyką. Pagrindinis printf_s aprašymo skirtumas C ir printf yra toks: funkcija printf_s tikrina, ar formato eilutėje nėra tinkamų simbolių, kitaip nei printf, kuri tik tikrina, ar formato eilutėje nėra nulinės rodyklės.

Pažvelkime atidžiau į printf funkciją.

Bendras aprašymas

C kalboje simboliai spausdinami į standartinę išvestį iškviečiant funkciją printf. Printf komanda C formatu išvesties duomenų rinkinį ir siunčia jį į stdout. Vertės, perduodamos kaip argumentai funkcijai, išvedamos į konsolę pagal nurodytą formato eilutę, kurioje savo ruožtu yra dviejų tipų elementai. Pirmasis tipas – tai ekrane rodomi simboliai, o antrajam tipui priklauso elementai, lemiantys duomenų formato ypatybes ir atsakingi už argumentų pateikimo būdą išvesties metu.

Išvedant kintamuosius su printf C, tam tikri simbolių deriniai argumentų eilutėje pakeičiami duomenimis, konvertuotais pagal tuos simbolius, ir kiekvienas duomenų tipas turi savo išvesties formato specifikacijas.

Funkcijos tipas ir grąžinimo reikšmė

Funkcija printf grąžina sveikąjį skaičių, nurodantį ekrane atspausdintų simbolių skaičių. Pavyzdžiui, galite priskirti:

int k = printf ("Sveiki, %c %d %s", "a", 11, "visi!"),

ir tada kintamojo k reikšmė gali lengvai nustatyti, ar išvesties metu įvyko klaida. Jei grąžinama neigiama reikšmė (jei funkcija grąžino "-1"), galime daryti išvadą, kad ją vykdant įvyko klaida.

Sintaksė ir priklausomybės

Norėdami naudoti printf funkciją, turite įtraukti antraštės failą "stdio.h" taip:

#įtraukti

Funkcijos šablonas atrodo taip:

int printf (const char *formatas, ...)

Elipsė nurodo išvestinų argumentų sąrašą. Funkciją printf galima naudoti su skirtingu argumentų skaičiumi, tačiau pirmasis iš abiejų pusių visada ribojamas dvigubomis kabutėmis, o kiekvieną paskesnį nuo ankstesnio reikia atskirti kableliu. Tai, kas parašyta dvigubomis kabutėmis ir nėra formato specifikacija, spausdinama be pakeitimų, kitu atveju, susidūrus su specifikatoriumi, nukopijuojamas jo reikšmės tipas.

Forma, skirta nurodyti formato specifikacijas:

%[vėliavos][plotis][.pozicija][ilgis]tipas

Formatavimas su printf C išvesties reikšmėmis

Formato eilutė, nurodyta skliausteliuose po iškviestos funkcijos pavadinimo, skaitoma tik viena kryptimi: iš kairės į dešinę, o pirmasis po šios eilutės nurodytas argumentas spausdinamas tik tada, kai susiduriama su pirmąja specifikacija. Iki formato eilutės pabaigos joje nurodytos specifikacijos inicijuos vėlesnių argumentų konvertavimą ir spausdinimą. Formato eilutėje tarpo simbolis laikomas įprastu simboliu ir išvedamas, kai jis nenaudojamas formato specifikacijos išraiškoje.

Simbolis „%“ nurodo išvesties formato specifikacijos pradžią, o po to – formato kodą. Visi specifikacijos laukai yra atskiri skaičiai arba simboliai, apibrėžiantys formatavimo sąlygas.

Suformatuota printf išvestis C turi savo ypatumus. Jei išvardytų argumentų skaičius viršija formato specifikacijų skaičių, jie praleidžiami ir nespausdinami. Priešingu atveju, jei spausdintinų argumentų sąraše yra daugiau formato specifikacijų nei reikšmių, funkcijos iškvietimo rezultatas nenustatomas.

Norint aiškiai nurodyti, kurį argumentą naudoti, galima naudoti "%m$" vietoj "%" ir "*m$" vietoj "*", o m - sveikoji dešimtainė reikšmė, nurodanti norimo argumento vietą (indeksavimas prasideda nuo vienos) .

Galimybės

Formato eilutėje naudojamos vėliavėlės
Vėliavaapibūdinimas
- Rezultato lygiavimas išvesties lauke į kairę
+ Spausdinant skaitinę reikšmę, kuri turi ženklą, prieš teigiamą reikšmę turi būti spausdinamas „+“ (pagal numatytuosius nustatymus prieš neigiamą reikšmę spausdinama tik „-“).
0 Sveikiesiems skaičiams ir slankiojo kablelio skaičiams priekiniai nuliai naudojami vietoj tarpo simbolių, kad būtų užpildyti kairieji skaitmenys, kai lauko plotis nurodytas didesnis už skaičiaus ilgį. Sveikųjų skaičių vėliavėlė nepaisoma, jei tiksliai nurodytas tikslumas. Kitoms konversijoms naudojant šią vėliavėlę funkcijos veikimas neapibrėžtas. „0“ vėliavėlė nepaisoma, jei yra „-“.
erdvėJei pasirašytos išraiškos išvesties rezultatas neprasideda tuo ženklo simboliu arba yra tuščias, tada prie rezultato pridedamas tarpas. Jei yra vėliavėlė „+“, „tarpo“ vėliavėlė nepaisoma
# Atliekama alternatyvi konversijos forma

Įvairių formatų specifikacijos

Formato specifikacijaPrintf C naudojimas ir aprašymasArgumento tipas
% Pažodinio „%“ rašymas
cVieno simbolio išvestis. Argumentas konvertuojamas į nepasirašyto simbolio tipą. Naudojant „l“ modifikatorių, argumentas konvertuojamas į simbolių eilutęnepasirašytas char
sIšspausdinkite simbolių eilutę. Argumentas turi būti žymeklis į pradinį char masyvo elementąchar*
d
i
Ženklinio sveikojo skaičiaus reikšmės dešimtainės dalies spausdinimastarpt
oIšvedamas aštuntasis beženklio sveikojo skaičiaus vaizdavimasnepasirašytas tarpt
x
X
Išvesties šešioliktainis beženklio sveikojo skaičiaus vaizdavimas. Simboliai „a“, „b“, „c“, „d“, „e“, „f“ naudojami „x“ konvertavimui. Ir transformuoti "X" - "A", "B", "C", "D", "E", "F"nepasirašytas tarpt
uIšveda dešimtainę konversiją be sveikojo skaičiaus reikšmės. Jei konvertuota vertė ir tikslumas yra 0, simboliai neišvedaminepasirašytas tarpt
f
F
Dešimtainės slankiojo kablelio skaičiaus spausdinimasdvigubai
e
E
Išveda dešimtainį mokslinį žymėjimą, suapvalintą ir konvertuotą taip, kad prieš kablelį būtų vienas skaitmuo, o skaitmenų skaičius po kablelio atitiktų vaizdavimo tikslumą (numatytasis tikslumas yra 6, o jei nurodytas 0, tada dešimtainis simbolis iš viso neišvedamas). „e“ simbolis rodomas didžiosiomis arba mažosiomis raidėmis, atsižvelgiant į konversijądvigubai
a
A
Išvesties šešioliktainis slankaus kablelio skaičiaus vaizdasdvigubai
g
G
Išveskite dešimtainį slankaus kablelio skaičių arba jo dešimtainį eksponentinį vaizdą, priklausomai nuo reikšmės ir tikslumodvigubai
nGrąžina elementų skaičių, atspausdintą printf. Rezultatas įrašomas į kintamąjį, kurį nurodo argumentas. Specifikacijoje negali būti vėliavėlių, lauko pločio ar tikslumoint *
pRodyklės išvestistuštuma *

Lauko pločio modifikatorius

Formatavimo eilutė printf C gali įrašyti sveikąjį skaičių po procento ženklo ir prieš formatavimo komandą. Tai lauko pločio modifikatorius ir turi įtakos rodomų duomenų pateikimui. Mažiausias lauko plotis, skirtas reikšmei, nustatomas pagal šį skaičių, o tokio modifikatoriaus buvimas, jei argumentas yra mažesnis nei jam skirtas laukas, prie rezultato pridedami tarpai arba nuliai. Numatytoji rezervuota vieta yra tarpo simbolis, bet galite nustatyti jį į nulį, prieš pločio specifikaciją. Modifikatorius nurodo minimalų plotį, o bet kokia reikšmė, didesnė už šį minimumą, bus spausdinama be trukdžių. Pavyzdžiui, skaičius, sudarytas iš mažiau nei aštuonių simbolių ir atspausdintas su specifikacija „%08d“, bus užpildytas iki reikiamų aštuonių simbolių su nuliais.

Panašūs modifikatoriai taip pat gali nurodyti tikslumo arba lygiavimo parametrus.

Tikslumo modifikatorius

Tikslumo modifikatorius naudojamas norint nustatyti skaičių po kablelio skaičių, kurį reikia spausdinti skaičių vaizde. Norėdami pridėti tikslumo modifikatorių, po lauko pločio specifikacijos turite įdėti tašką ir po jo nurodyti norimą tikslumo reikšmę. Tikslumo modifikatorius yra apibrėžtas „e“, „f“, „a“, „E“, „A“ ir „F“ formatams. Sveikiesiems skaičiams modifikatorius nustato rodomų skaitmenų skaičių, prireikus prie kairiojo skaitmens pridėdamas nulius, o rodydamas racionalius skaičius – nustato reikiamą skaičių po kablelio. Eilučių kintamiesiems skaičius, esantis po taško tikslumo modifikatoriuje, nustato didžiausią išvesties lauko ilgį. Pavyzdžiui, atsižvelgiant į formato specifikaciją „%4.8s“, bus išvesta eilutė, kurios ilgis svyruoja nuo keturių iki aštuonių simbolių; jei viršijama, atokiausi simboliai bus praleisti.

Kiti formato modifikatoriai

Numatytasis lygiavimas yra sulygiuotas dešinėje, tačiau tai galima pakeisti po "%" įdėjus ženklą "-". Ši formato specifikacija nustato lygiavimą kairėje.

Be to, funkcija printf gali atskirti trumpus ir ilgus sveikųjų skaičių reikšmes, kurias reikia spausdinti. Tinkamos specifikacijos yra „o“, „d“, „u“, „i“, „x“ ir „X“. Ilgosios reikšmės tipas nurodomas modifikatoriumi „l“, o trumposios vertės tipas – modifikatoriumi „h“. Pavyzdžiui, išvedant ilgą sveikąjį skaičių ir trumpą nepasirašytą int reikšmę, formato specifikacijos yra atitinkamai „%ld“ ir „%hu“.

Pavyzdžiai

1. Printf C aprašymas ir kiekvienos funkcijos iškvietimo rezultatai:

2. Rodyti paprastą dialogo pranešimą:

printf("pranešimas");

3. Programos kodas:

Išraiškos, nurodytos prieš formato specifikacijas, spausdinamos ekrane, kaip ir argumentai po formato eilutės. Aukščiau pateiktų printf C funkcijų vykdymo rezultatas, išvesties aprašymas:

Šis pavyzdys iliustruoja rodymą naudojant įvairius eilučių, sveikųjų skaičių kintamųjų, simbolių ir slankiojo kablelio skaičių formatus.

Standartinė įvesties funkcija scanf ir jos naudojimo pavyzdžiai

Funkcija „scanf“ naudojama klaviatūros įvestims skaityti. Printf ir scanf aprašymas C yra pateiktas antraštės faile "stdio.h".

scanf("formato specifikatoriai",&reikšmė1,&reikšmė2, ...);

Paprastas darbo su scanf funkcija pavyzdys:

#įtraukti

printf(„kaip formatuoti“, 1 parametras, 2 parametras, ...) – ekrane rodomas rezultatas

$rezultatas= sprintf(..", .., .., ...) - tas pats, tik eilutė neišvedama, o dedama į $rezultatą

Citata iš vadovo vertimo ( PAVYZDŽIAIžemiau:-):

sprintf

sprintf – grąžina suformatuotą eilutę
apibūdinimas
sprintf (styginių formatas, mišrus ...);

Grąžina eilutę, apdorotą pagal formato eilutę formatu .

Formato eilutė, kurioje yra nulis ar daugiau direktyvų: įprasti simboliai (išskyrus %), kurie nukopijuojami tiesiai į rezultatą ir nukopijuojami tiesiai į rezultatą, ir pakeitimų aprašymai, kurių kiekvienas atlieka konkrečius veiksmus. Tai taip pat taikoma sprintf () ir printf()

Kiekvienas pakeitimo pareiškimas susideda iš šių elementų, eilės tvarka:

    Papildomas kamšalo specifikatorius, kuris nurodo, kokie simboliai bus naudojami norint užpildyti rezultatą iki tinkamo eilutės dydžio. Tai gali būti tarpai arba 0 (nulis simbolio). Pagal numatytuosius nustatymus jis užpildytas tarpais. Alternatyvus užpildymo simbolis gali būti nurodytas viena citata ("). Žr. toliau pateiktus pavyzdžius.

    Papildomas derinimo deskriptorius, kuriame teigiama, kad rezultatas turi būti sulygiuotas kairėje arba dešinėje. Pagal numatytuosius nustatymus lygiavimas yra išlygiuotas dešinėje; - simbolis bus lygiuojamas į kairę.

    Papildomas pločio specifikatorius, kuriame nurodoma, kiek simbolių (mažiausiai) gali būti pakeistas.

    Papildomas tikslumo deskriptorius, kuris nurodo, kiek skaičių po kablelio rodyti slankaus kablelio skaičiams. Šis aprašas neturi įtakos kitiems tipams, išskyrus dvigubą. (dar viena naudinga funkcija formatuojant skaičius yra number_format() .)

  1. Tipo specifikatorius, kuris nurodo, kaip turėtų būti traktuojamas argumento duomenų tipas. Galimi tipai:

    % yra procento simbolis. Nereikia jokių argumentų.
    b – argumentas traktuojamas kaip sveikasis skaičius ir pateikiamas kaip dvejetainis skaičius.
    c – argumentas traktuojamas kaip sveikasis skaičius ir pateikiamas kaip simbolis su ASCII reikšme.
    d – argumentas traktuojamas kaip sveikasis skaičius ir pateikiamas kaip dešimtainis skaičius.
    f – argumentas traktuojamas kaip dvigubas ir vaizduojamas kaip slankiojo kablelio skaičius.
    o – argumentas traktuojamas kaip sveikasis skaičius ir vaizduojamas kaip aštuntainis skaičius.
    s – argumentas interpretuojamas ir vaizduojamas kaip eilutė.
    x – argumentas traktuojamas kaip sveikasis skaičius ir pateikiamas kaip šešioliktainis skaičius (su mažosiomis raidėmis).
    X – argumentas traktuojamas kaip sveikasis skaičius ir pateikiamas kaip šešioliktainis skaičius (su raidėmis didžiosiomis raidėmis).
Pavyzdžiai

2 pavyzdys. sprintf: valiutos formatavimas

$pinigai1 = 68,75; $pinigai2 = 54,35; $pinigai = $pinigai1 + $pinigai2; // echo $pinigai išves "123.1"; $formatuotas = sprintf("%01.2f", $pinigai); // echo $formatted išves "123.10"

Pavyzdžiai

Viskas, kas parašyta >>> tarp tokių skliaustų <<< yra funkcijos rezultatas (t.y. išvesties į ekraną pavyzdys) $s="MyString"; -> eilutė %s $f=12345.6789; -> trupmeninis %f $d=12345; -> sveikasis skaičius %d 10-oji sistema: 0123456789 16 skaičiai %x 16-oji sistema: 0123456789abcdef 16 skaičiai %X 16-oji sistema: 0123456789ABCDEF 8 skaičiai %o 8-oji sistema: 01234 numeriai spausdinti: 01234 sistema 5 %7 d",$ d); >>> 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); >>> autsaideris12345tekstas<<< вывод нескольких переменных - последовательное перечисление printf("%d-%f-%s",$d,$f,$s); >>> 12345-12345.678900-MyString<<< выравнивание (ширина 20 символов) по правому краю, пустоту заполняем "_": printf("%"_20s",MyString); >>> ____________Mano eilutė<<< выравнивание по левому краю, пустоту заполняем "x": printf("%-"x20s",MyString); >>> MyStringxxxxxxxxxxxxx<<<

Kitus pavyzdžius žiūrėkite čia:

(PHP 4, PHP 5, PHP 7)

sprintf - Grąžina suformatuotą eilutę

Parametrų sąrašas

Formato eilutę sudaro nulis arba daugiau direktyvų: įprasti simboliai (išskyrus % ), kurios nukopijuojamos tiesiai į gautą eilutę, ir transformacijos deskriptoriai, kurių kiekvienas pakeičiamas vienu iš parametrų. Tai galioja abiem sprintf (), ir printf().

Kiekvieną konversijos specifikaciją sudaro procento ženklas ( % ), po kurio yra vienas ar daugiau papildomų elementų (čia jie išvardyti):

  1. Neprivaloma simbolio aprašas, nurodant, kaip ženklas (- arba +) bus pritaikytas skaičiui. Pagal numatytuosius nustatymus naudojamas tik minuso ženklas, jei skaičius yra neigiamas. Dėl šios specifikacijos teigiami skaičiai taip pat rodo pliuso ženklą ir buvo įtrauktas į PHP 4.3.0.
  2. Neprivaloma kamšalo specifikatorius, kuris nurodo, kuris simbolis bus naudojamas rezultatui užpildyti iki reikiamo ilgio. Tai gali būti erdvė arba 0 . Numatytasis yra tarpas. Alternatyvus simbolis gali būti nurodytas naudojant vieną kabutę ( " ). Žiūrėkite pavyzdžius žemiau.
  3. Neprivaloma derinimo deskriptorius, kuris nurodo lygiavimą kairėje arba dešinėje. Pagal numatytuosius nustatymus jis sulygiuotas į dešinę, - naudojamas kairiajam lygiavimui.
  4. Neprivalomas numeris pločio specifikatorius, kuris nurodo minimalų simbolių skaičių, kurį turės šios konversijos rezultatas.
  5. Neprivaloma tikslumo deskriptorius, nurodytas kaip taškas (."), po kurio yra pasirenkama dešimtainė eilutė, nurodanti, kiek ženklų po kablelio rodyti slankiojo kablelio skaičiams. Kai naudojamas su eilutėmis, šis aprašas veikia kaip pjovimo taškas, nustatantis didžiausią simbolių ribą. Taip pat galite nurodyti simbolį, naudojamą skaičiui užbaigti tarp taško ir skaičiaus.
  6. Tipo specifikatorius, kuriame nurodoma, kaip apdoroti argumento duomenų tipą. Tinkami tipai:

    • % - procento simbolis. Argumentas nenaudojamas.
    • b- argumentas traktuojamas kaip sveikasis skaičius, o išvestis kaip dvejetainis skaičius.
    • c- argumentas traktuojamas kaip sveikasis skaičius ir išvedamas kaip simbolis su atitinkamu ASCII kodu.
    • d- argumentas traktuojamas kaip sveikasis skaičius, o išvedamas kaip dešimtainis skaičius su ženklu.
    • e- argumentas aiškinamas kaip skaičius mokslinėje žymėjime (pvz., 1.2e+2). Tikslumo aprašas nurodo skaičių po kablelio skaičių nuo PHP 5.2.1. Ankstesnėse versijose buvo nurodytas reikšmingų skaitmenų skaičius (vienu ženklu mažiau).
    • E- panašus %e, bet naudoja didžiąją raidę (pvz., 1,2E+2).
    • f- argumentas traktuojamas kaip slankiojo kablelio skaičius ir taip pat išvedamas priklausomai nuo lokalės.
    • F- argumentas traktuojamas kaip slankiojo kablelio skaičius ir taip pat išvedamas, bet neatsižvelgiant į lokalę. Galima nuo PHP 4.3.10 ir PHP 5.0.3.
    • g %e Ir %f.
    • G- pasirenka trumpiausią įrašą iš %E Ir %f.
    • o- argumentas traktuojamas kaip sveikasis skaičius, o išvestis - kaip aštuntainis skaičius.
    • s- argumentas traktuojamas kaip eilutė.
    • u- argumentas traktuojamas kaip sveikasis skaičius, o išvedamas kaip beženklis dešimtainis skaičius.
    • x- argumentas traktuojamas kaip sveikasis skaičius, o išvedamas kaip šešioliktainis skaičius (mažosiomis raidėmis).
    • X- argumentas traktuojamas kaip sveikasis skaičius, o išvedamas kaip šešioliktainis skaičius (didžiosiomis raidėmis).

Kintamieji bus konvertuoti į atitinkamą specifikatoriaus tipą:

Tipo tvarkymas
Tipas Tiksliau
styga s
sveikasis skaičius d, u, c, o, x, X, b
dvigubai g, G, e, E, f, F

Dėmesio

Bandymas naudoti eilučių ir pločio specifikacijų derinį su koduotėmis, kurioms vienam simboliui reikia daugiau nei vieno baito, gali atsirasti netikėtų rezultatų.

Formato eilutė palaiko numeravimą ir parametrų pertvarkymą. Pavyzdžiui:

1 pavyzdys Parametrų tvarkos keitimas

$skaičius = 5 ;
$vieta = "medis" ;

$formatas = „%d beždžionių sėdi ant %s“;

?>

Šis kodas išves „5 beždžionės, sėdinčios ant medžio“. Dabar įsivaizduokite, kad formato eilutė yra atskirame faile, kuris vėliau bus išverstas į kitą kalbą, ir mes ją perrašome taip:

2 pavyzdys Parametrų tvarkos keitimas

$formatas = „Ant %s sėdi %d beždžionių“;
echo sprintf ($ formatas, $ skaičius, $ vieta);
?>

Iškilo problema: konversijos specifikacijų tvarka nesutampa su argumentų tvarka. Nenorime keisti kodo ir turime nurodyti, kuris argumentas atitinka kurį konversijos specifikatorių.

3 pavyzdys Parametrų tvarkos keitimas

$formatas = „Ant %2$s sėdi %1$d beždžionių“;
echo sprintf ($ formatas, $ skaičius, $ vieta);
?>

Argumentų numeravimas turi kitą paskirtį: leidžia kelis kartus spausdinti tą patį argumentą, neperduodant funkcijai papildomų parametrų.

4 pavyzdys Parametrų tvarkos keitimas

$formatas = „Ant %2$s sėdi %1$d beždžionių.
Puiku, kad %2$s sėdi ant %1$d beždžionių.
;
echo sprintf ($ formatas, $ skaičius, $ vieta);
?>

Keičiant parametrų tvarką padėties deskriptorius n$ turi būti iškart po procento ženklo ( % ) prieš visus kitus deskriptorius, kaip parodyta toliau pateiktame pavyzdyje.

5 pavyzdys Komplemento simbolio nurodymas

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

123 000000123

6 pavyzdys Padėties specifikatoriaus naudojimas ir kartu su kitais deskriptoriais

$formatas = „Ant %2$s sėdi %1$04d beždžionių“;
echo sprintf ($ formatas, $ skaičius, $ vieta);
?>

Šio pavyzdžio vykdymo rezultatas:

0005 beždžionės sėdi ant medžio

komentuoti:

Buvo bandoma naudoti pozicijos specifikaciją, didesnę nei PHP_INT_MAX, funkcija sugeneruos įspėjimą sprintf () .

Dėmesio

The c tipo specifikatorius nepaiso užpildymo ir pločio

Grąžinamos vertės

Grąžina eilutę, suformatuotą pagal formatą .

Pavyzdžiai

7 pavyzdys sprintf (): paminkštinimas su nuliais

$n = 43951789 ;
$u = - 43951789 ;
$c = 65; // ASCII 65 yra "A"

// atkreipkite dėmesį, kad dvigubas %% išvedamas kaip vienas "%"
printf ("%%b = "%b"\n" , $n ); // dvejetainis vaizdavimas
printf ("%%c = "%c"\n" , $c ); // atspausdina ascii simbolį, panašų į chr() funkciją
printf ("%%d = "%d"\n" , $n ); // reguliarus sveikasis skaičius
printf ("%%e = "%e"\n" , $n ); // mokslinis KOMENTARAS
printf ("%%u = "%u"\n" , $n ); // teigiamo skaičiaus neženklinis sveikasis skaičius
printf ("%%u = "%u"\n" , $u ); // neigiamo skaičiaus nežymėtas sveikasis skaičius
printf ("%%f = "%f"\n" , $n ); // slankaus kablelio skaičiaus atvaizdavimas
printf ("%%o = "%o"\n" , $n ); // aštuntainis vaizdas
printf ("%%s = "%s"\n" , $n ); // eilutė
printf ("%%x = "%x"\n" , $n ); // šešioliktainis vaizdavimas (mažosios raidės)
printf ("%%X = "%X"\n" , $n ); // šešioliktainis vaizdavimas (didžiosios raidės)

Printf ("%%+d = "%+d"\n" , $n ); // ženklo deskriptorius su teigiamu sveikuoju skaičiumi
printf ("%%+d = "%+d"\n" , $u ); // ženklo deskriptorius su neigiamu sveikuoju skaičiumi
?>

Šio pavyzdžio vykdymo rezultatas:

%B = "10100111101010011010101101" %C = "A" %D = "43951789" %E = "4.39518E+7" %U = "43951789" %U = "4251015507" %F = "43951789.0000" %O = "2475232 55 " %s = "43951789" %x = "29ea6ad" %X = "29EA6AD" %+d = "+43951789" %+d = "-43951789"

8 pavyzdys printf(): eilučių aprašai

$s = "beždžionė" ;
$t = "daug beždžionių" ;

Printf("[%s]\n" , $s ); // normali eilutės išvestis
printf ("[%10s]\n" , $s ); // lygiuoti į dešinę su tarpais
printf ("[%-10s]\n" , $s ); // Lygiavimas kairėje su tarpais
printf ("[%010s]\n" , $s ); // Nulinis užpildymas taip pat veikia su eilutėmis
printf ("[%"#10s]\n" , $s ); // naudokite savo papildomą simbolį „#“.
printf ("[%10.10s]\n" , $t ); // Lygiavimas kairėje su 10 simbolių apkarpymu
?>

styga sprintf(eilutės formatas [, mišrūs argai])

Grąžina eilutę, sukurtą naudojant formato eilutės formatą.

Formato eilutę sudaro nurodymai: įprasti simboliai (išskyrus %), kurie nukopijuojami į rezultatų eilutę ir transformacijos deskriptoriai , kurių kiekvienas pakeičiamas vienu iš parametrų. Tai taip pat taikoma fprintf() , sprintf () Ir printf() .

Kiekvieną konversijos specifikaciją sudaro procento ženklas (%), po kurio seka vienas ar daugiau papildomų elementų (čia jie yra išvardyti tokia tvarka):

    Neprivaloma kamšalo specifikatorius , kuris nurodo, kuris simbolis bus naudojamas rezultatui užpildyti iki reikiamo ilgio. Tai gali būti tarpas arba 0. Numatytasis yra tarpas. Alternatyvus simbolis gali būti nurodytas naudojant " . Žr. toliau pateiktus pavyzdžius.

    Neprivaloma derinimo deskriptorius , kuris nustato išlygiavimą į kairę arba dešinę. Pagal numatytuosius nustatymus jis lygiuojamas į dešinę, - naudojamas lygiuojant į kairę.

    Neprivalomas numeris pločio specifikatorius , kuris nurodo minimalų simbolių skaičių, kurį turės šios konversijos rezultatas.

    Neprivaloma tikslumo deskriptorius , kuris nurodo, kiek skaičių po kablelio rodyti slankiojo kablelio skaičiams. Reikšminga tik skaitmeninių duomenų tipui plūdė. (Norint formatuoti skaičius, taip pat patogu naudoti funkciją number_format() .)

  1. Tipo specifikatorius , kuriame nurodoma, kaip apdoroti argumento duomenų tipą. Tinkami tipai:

    % yra procento simbolis. Argumentas nenaudojamas.
    b – argumentas traktuojamas kaip sveikasis skaičius, o išvedamas kaip dvejetainis skaičius.
    c – argumentas traktuojamas kaip sveikasis skaičius ir išvedamas kaip simbolis su atitinkamu ASCII kodu.
    d – argumentas traktuojamas kaip sveikasis skaičius ir išvedamas kaip dešimtainis skaičius su ženklu.
    e – argumentas interpretuojamas kaip plūdė ir išvedamas moksliniu žymėjimu (pavyzdžiui, 1.2e+2).
    u – argumentas traktuojamas kaip sveikasis skaičius ir išvedamas kaip beženklis dešimtainis skaičius.
    f - argumentas interpretuojamas kaip plūdė ir išvedamas kaip dešimtainis slankiojo kablelio skaičius.
    o – argumentas traktuojamas kaip sveikasis skaičius, o išvestis kaip aštuntainis skaičius.
    s – argumentas traktuojamas kaip eilutė.
    x – argumentas traktuojamas kaip sveikasis skaičius ir išvedamas kaip šešioliktainis skaičius (mažosiomis raidėmis).
    X – argumentas traktuojamas kaip sveikasis skaičius ir išvedamas kaip šešioliktainis skaičius (didžiosiomis raidėmis).

Nuo PHP 4.0.6 formato eilutė palaiko numeravimą ir parametrų pertvarkymą. Pavyzdžiui:


Šis kodas išves „Medyje yra 5 beždžionės“. Dabar įsivaizduokite, kad formato eilutė yra atskirame faile, kuris vėliau bus išverstas į kitą kalbą, ir mes ją perrašome taip:

2 pavyzdys: parametrų eilės keitimas

$format = "%s yra %d beždžionių" ;

?>
Iškilo problema: konversijos specifikacijų tvarka nesutampa su argumentų tvarka. Nenorime keisti kodo ir turime nurodyti, kuris argumentas atitinka kurį konversijos specifikatorių.

3 pavyzdys: parametrų tvarkos keitimas

$formatas = „%2\$s yra %1\$d beždžionės“;
printf ($ formatas, $ skaičius, $ vieta);
?>
Argumentų numeravimas turi kitą paskirtį: leidžia kelis kartus spausdinti tą patį argumentą, neperduodant funkcijai papildomų parametrų.