• Formatowanie ciągu PHP. Sprintf — Zwraca sformatowany ciąg

    Standardową funkcją wyjściową konsoli w C jest printf. Jego opis znajduje się w pliku nagłówkowym stdio.h. Korzystając z tej funkcji, możesz wysyłać dane lub komunikaty użytkownika do konsoli. W języku C rozróżniana jest wielkość liter. Na przykład dwie funkcje printf i scanf różnią się od ich podobnych funkcji Printf i Scanf. Wszystkie znaki w funkcjach printf i scanf muszą być również pisane małymi literami. Jednym z najprostszych przykładów funkcji printf w języku C, która wypisuje znajome powitanie „Witaj, świecie”, jest:

    Definiowanie funkcji grupy printf w pliku „stdio.h”

    Plik „stdio.h” odnosi się do standardowej biblioteki wejść/wyjść w języku C. Opis funkcji printf i podobnych funkcji podano w nim następująco:

    Wymienione funkcje ładują dane z określonych lokalizacji, konwertują je na ciąg znaków i wysyłają do określonych strumieni wyjściowych.

    Rodzina funkcji printf

    Funkcje grupowe printf w języku C służą do przetwarzania i formatowania danych wyjściowych do standardowego strumienia. Co więcej, funkcje printf i vprintf zapisują do standardowego strumienia stdout, funkcje fprintf i vfprintf wysyłają wartości argumentów wyjściowych do określonego strumienia wyjściowego, a snprintf, sprintf, vsnprintf i vsprintf zapisują dane do ciągu znaków. Wszystkie wymienione funkcje działają przy użyciu ciągu formatującego określającego wymagane konwersje argumentów dla danych wyjściowych.

    Funkcja fprintf zapisuje wynik do strumienia wyjściowego. Funkcja sprintf wysyła wynik do bufora, który jest ciągiem znaków. Zachowanie funkcji jest niezdefiniowane, jeśli ciąg znaków, który ma zostać wypisany, przekracza rozmiar tablicy buforów.

    Funkcja snprintf, podobnie jak poprzednia, zapisuje dane do bufora łańcuchowego. Wynikowy ciąg znaków jest zakończony zerem, chyba że bufsz (rozmiar bufora) wynosi zero. W przeciwnym razie, jeśli bufsz wynosi zero, nic nie jest wysyłane do bufora, a sam bufor może być wskaźnikiem zerowym, ale wartość zwracana (liczba bajtów, która powinna była zostać zapisana) jest nadal obliczana.

    Funkcja printf_s działa w zasadzie tak samo jak printf, z wyjątkiem jednej rzeczy. Główna różnica w opisie printf_s w C i printf jest następująca: funkcja printf_s sprawdza ciąg formatujący pod kątem prawidłowych znaków, w przeciwieństwie do printf, który sprawdza tylko ciąg formatujący pod kątem wskaźnika zerowego.

    Przyjrzyjmy się bliżej funkcji printf.

    ogólny opis

    W C wypisywanie znaków na standardowe wyjście odbywa się poprzez wywołanie funkcji printf. Polecenie printf w C formatuje zestaw danych wyjściowych i wysyła je na standardowe wyjście. Wartości przekazane jako argumenty funkcji są wyprowadzane do konsoli zgodnie z określonym ciągiem formatującym, który z kolei zawiera dwa typy elementów. Pierwszy typ to znaki wyświetlane na ekranie, natomiast do drugiego typu należą elementy określające cechy formatu danych i odpowiadające za sposób prezentacji argumentów podczas wyprowadzania.

    Podczas wyprowadzania zmiennych za pomocą printf w C określone kombinacje znaków w ciągu argumentów są zastępowane danymi przekonwertowanymi zgodnie z tymi znakami, a każdy typ danych ma własną specyfikację formatu wyjściowego.

    Typ funkcji i wartość zwracana

    Funkcja printf zwraca wartość całkowitą wskazującą liczbę znaków wydrukowanych na ekranie. Możesz na przykład przypisać:

    int k = printf("Witajcie %c %d %s", "a", 11, "wszyscy!"),

    i wtedy wartość zmiennej k może łatwo określić, czy podczas wyprowadzania wystąpił błąd. Jeżeli zwrócona zostanie wartość ujemna (jeśli funkcja zwróciła „-1”), możemy stwierdzić, że podczas jej wykonywania wystąpił błąd.

    Składnia i zależności

    Aby skorzystać z funkcji printf, należy dołączyć plik nagłówkowy „stdio.h” w następujący sposób:

    #włączać

    Szablon funkcji wygląda następująco:

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

    Wielokropek odnosi się do listy argumentów, które mają zostać wyprowadzone. Funkcji printf można używać z różną liczbą argumentów, przy czym pierwszy z nich jest zawsze oddzielany z obu stron podwójnymi cudzysłowami, a każdy kolejny musi być oddzielony od poprzedniego przecinkiem. To, co jest zapisane w cudzysłowie i nie jest specyfikacją formatu, jest drukowane bez zmian, w przeciwnym razie w przypadku napotkania specyfikatora kopiowany jest jego typ wartości.

    Formularz do określenia specyfikacji formatu:

    %[flagi][szerokość][.pozycja][długość]typ

    Formatowanie za pomocą printf w wartościach wyjściowych C

    Ciąg formatujący podany w nawiasie po nazwie wywoływanej funkcji czytany jest tylko w jednym kierunku: od lewej do prawej, a pierwszy argument podany po tej linii jest wypisywany tylko w przypadku napotkania pierwszej specyfikacji. Do końca ciągu formatującego określone w nim specyfikacje będą inicjować konwersję i drukowanie kolejnych argumentów. W ciągu formatującym znak spacji jest traktowany jak zwykły znak i jest wyprowadzany, jeśli nie jest używany w wyrażeniu specyfikacji formatu.

    Znak „%” wskazuje początek specyfikacji formatu wyjściowego, po którym następuje kod formatu. Wszystkie pola w specyfikacji są indywidualnymi liczbami lub znakami, które definiują warunki formatowania.

    Sformatowane wyjście printf w C ma swoje własne cechy szczególne. Jeśli liczba wymienionych argumentów przekracza liczbę specyfikacji formatu, są one pomijane i nie są drukowane. W przeciwnym wypadku, jeśli na liście argumentów do wydrukowania znajduje się więcej specyfikacji formatu niż wartości, wynik wywołania funkcji nie jest ustalany.

    Aby wyraźnie wskazać, którego argumentu użyć, można użyć „%m$” zamiast „%” i „*m$” zamiast „*”, gdzie m jest całkowitą wartością dziesiętną wskazującą pozycję żądanego argumentu (indeksowanie zaczyna się od jednego).

    Opcje

    Flagi używane w ciągu formatującym
    FlagaOpis
    - Wyrównanie wyniku do lewej strony pola wyjściowego
    + Podczas drukowania wartości numerycznej ze znakiem, przed wartością dodatnią musi być wydrukowany znak „+” (domyślnie przed wartością ujemną drukowane jest tylko „-”)
    0 W przypadku liczb całkowitych i zmiennoprzecinkowych zera początkowe zamiast spacji służą do wypełniania lewych cyfr, jeśli szerokość pola jest większa niż długość liczby. W przypadku liczb całkowitych flaga jest ignorowana, jeśli jawnie określono precyzję. W przypadku innych konwersji korzystających z tej flagi zachowanie funkcji jest niezdefiniowane. Flaga „0” jest ignorowana, jeśli występuje flaga „-”.
    przestrzeńJeśli wynik wyjściowy wyrażenia ze znakiem nie zaczyna się od tego znaku znaku lub jest pusty, do wyniku dodawana jest spacja. Flaga „spacja” jest ignorowana, jeśli występuje flaga „+”.
    # Wykonywana jest alternatywna forma konwersji

    Różne specyfikatory formatu

    Specyfikator formatuUżycie i opis printf CTyp argumentu
    % Zapisywanie dosłownego „%”
    CWyjście jednego znaku. Argument jest konwertowany na typ znaku bez znaku. W przypadku użycia modyfikatora „l” argument jest konwertowany na ciąg znakówznak bez znaku
    SWydrukuj ciąg znaków. Argument musi być wskaźnikiem do elementu początkowego tablicy charznak *
    D
    I
    Drukowanie dziesiętnej reprezentacji wartości całkowitej ze znakiemwew
    oWyprowadzanie ósemkowej reprezentacji wartości całkowitej bez znakubez znaku int
    X
    X
    Wyjściowa szesnastkowa reprezentacja wartości całkowitej bez znaku. Znaki „a”, „b”, „c”, „d”, „e”, „f” służą do konwersji „x”. I przekształcić „X” - „A”, „B”, „C”, „D”, „E”, „F”bez znaku int
    tyWyjściowa konwersja dziesiętna bez wartości całkowitej ze znakiem. Jeśli przekonwertowana wartość i precyzja wynoszą 0, wówczas nie są wyprowadzane żadne znakibez znaku int
    F
    F
    Drukowanie dziesiętnej reprezentacji liczby zmiennoprzecinkowej ze znakiempodwójnie
    mi
    mi
    Wyprowadza dziesiętny zapis naukowy, zaokrąglony i przeliczony w taki sposób, że przed przecinkiem dziesiętnym jest jedna cyfra, a liczba cyfr po przecinku odpowiada precyzji reprezentacji (domyślna precyzja to 6, a jeśli określono 0, to symbol dziesiętny w ogóle nie jest wyświetlany). Znak „e” jest wyświetlany wielkimi lub małymi literami, w zależności od konwersjipodwójnie
    A
    A
    Wyjściowa reprezentacja szesnastkowa liczby zmiennoprzecinkowejpodwójnie
    G
    G
    Wyprowadź dziesiętną reprezentację liczby zmiennoprzecinkowej lub jej dziesiętną reprezentację wykładniczą w zależności od wartości i precyzjipodwójnie
    NZwraca liczbę elementów wydrukowanych przez printf. Wynik jest zapisywany do zmiennej wskazanej przez argument. Specyfikacja nie może zawierać flag, szerokości pola ani precyzjiint *
    PWyjście wskaźnikapróżnia *

    Modyfikator szerokości pola

    Linia formatu w printf C może zapisać liczbę całkowitą po znaku procentu i przed poleceniem formatowania. Jest to modyfikator szerokości pola i wpływa na prezentację wyświetlanych danych. Od tej liczby zależy najmniejsza szerokość pola przeznaczona dla wartości, a obecność takiego modyfikatora w przypadku, gdy argument jest mniejszy niż przypisane mu pole, powoduje dodawanie do wyniku spacji lub zer. Domyślnym symbolem zastępczym jest znak spacji, ale można go ustawić na zero, poprzedzając specyfikację szerokości. Modyfikator określa minimalną szerokość, a każda wartość większa niż to minimum zostanie wydrukowana bez zakłóceń. Na przykład liczba składająca się z mniej niż ośmiu znaków i wydrukowana ze specyfikacją „%08d” zostanie dopełniona do wymaganych ośmiu znaków zerami.

    Podobne modyfikatory mogą również określać parametry dokładności lub wyrównania.

    Modyfikator dokładności

    Modyfikator precyzji służy do określenia liczby miejsc dziesiętnych do wydrukowania w reprezentacji liczbowej. Aby dodać modyfikator precyzji, należy po określeniu szerokości pola postawić kropkę i po niej podać żądaną wartość precyzji. Modyfikator precyzji jest zdefiniowany dla formatów „e”, „f”, „a”, „E”, „A” i „F”. Dla liczb całkowitych modyfikator ustala liczbę wyświetlanych cyfr, w razie potrzeby dodając zera do lewej cyfry, a przy wyświetlaniu liczb wymiernych określa wymaganą liczbę miejsc po przecinku. W przypadku zmiennych łańcuchowych liczba występująca po kropce w modyfikatorze precyzji określa maksymalną długość pola dla danych wyjściowych. Na przykład, biorąc pod uwagę specyfikację formatu „%4.8s”, zostanie wyświetlony ciąg znaków o długości z zakresu od czterech do ośmiu znaków. Jeśli zostanie przekroczony, zewnętrzne znaki zostaną pominięte.

    Inne modyfikatory formatu

    Domyślne wyrównanie jest wyrównane do prawej strony, ale można to zmienić, umieszczając znak „-” po „%”. Ta specyfikacja formatu ustawia wyrównanie do lewej.

    Ponadto funkcja printf potrafi rozróżnić krótkie i długie typy wartości całkowitych, które mają zostać wydrukowane. Prawidłowe specyfikatory to „o”, „d”, „u”, „i”, „x” i „X”. Długi typ wartości jest określony przez modyfikator „l”, a krótki typ wartości przez modyfikator „h”. Na przykład podczas wyprowadzania długiej liczby całkowitej i krótkiej wartości int bez znaku specyfikacje formatu to odpowiednio „%ld” i „%hu”.

    Przykłady

    1. Opis printf C i skutki wywołania poszczególnych funkcji:

    2. Wyświetl prosty komunikat dialogowy:

    printf("wiadomość");

    3. Kod programu:

    Wyrażenia określone przed specyfikacją formatu są drukowane na ekranie, podobnie jak argumenty następujące po ciągu formatującym. Wynik wykonania powyższych funkcji printf C, opis wyjścia:

    Ten przykład ilustruje wyświetlanie przy użyciu różnych formatów ciągów, zmiennych całkowitych, znaków i liczb zmiennoprzecinkowych.

    Standardowa funkcja wejściowa scanf i przykłady jej wykorzystania

    Funkcja scanf służy do odczytywania danych wprowadzanych z klawiatury. Opis printf i scanf w C znajduje się w pliku nagłówkowym „stdio.h”.

    scanf("specyfikatory formatu",&wartość1,&wartość2, ...);

    Prosty przykład pracy z funkcją scanf:

    #włączać

    strunowy sprintf(format ciągu [, argumenty mieszane])

    Zwraca ciąg utworzony przy użyciu formatu ciągu formatującego.

    Ciąg formatujący składa się z dyrektyw: znaków zwykłych (z wyjątkiem %), które są kopiowane do ciągu wynikowego oraz deskryptory transformacji , z których każdy jest zastępowany jednym z parametrów. Dotyczy to również fprintf() , sprintf() I printf() .

    Każdy specyfikator konwersji składa się ze znaku procentu (%), po którym następuje jeden lub więcej dodatkowych elementów (w kolejności, w jakiej są tutaj wymienione):

      Opcjonalny specyfikator dopełnienia , który określa, który znak zostanie użyty do uzupełnienia wyniku do wymaganej długości. Może to być spacja lub 0. Wartość domyślna to spacja. Znak alternatywny można określić za pomocą " . Zobacz przykłady poniżej.

      Opcjonalny deskryptor wyrównania , który określa wyrównanie do lewej lub prawej strony. Domyślnie jest wyrównany do prawej strony, - służy do wyrównania do lewej.

      Numer opcjonalny specyfikator szerokości , który określa minimalną liczbę znaków, jaką będzie zawierał wynik tej konwersji.

      Opcjonalny deskryptor precyzyjny , który określa liczbę miejsc dziesiętnych wyświetlanych dla liczb zmiennoprzecinkowych. Znaczenie tylko dla numerycznego typu danych platforma. (Aby sformatować liczby, wygodnie jest również skorzystać z funkcji format liczbowy() .)

    1. Specyfikator typu , który określa sposób traktowania typu danych argumentu. Prawidłowe typy:

      % to symbol procentu. Argument nie jest używany.
      b - argument jest traktowany jako liczba całkowita i wyprowadzany jako liczba binarna.
      c - argument jest traktowany jako liczba całkowita i wyprowadzany jako znak z odpowiednim kodem ASCII.
      d - argument jest traktowany jako liczba całkowita i wyprowadzany jako liczba dziesiętna ze znakiem.
      e - argument jest interpretowany jako platforma i jest wyprowadzany w notacji naukowej (na przykład 1.2e+2).
      u - argument jest traktowany jako liczba całkowita i wyprowadzany jako liczba dziesiętna bez znaku.
      f - argument jest interpretowany jako platforma i jest wyprowadzany jako dziesiętna liczba zmiennoprzecinkowa.
      o - argument jest traktowany jako liczba całkowita i wyprowadzany jako liczba ósemkowa.
      s - argument jest traktowany jako ciąg znaków.
      x - argument jest traktowany jako liczba całkowita i wyprowadzany jako liczba szesnastkowa (małymi literami).
      X - argument jest traktowany jako liczba całkowita i wyprowadzany jako liczba szesnastkowa (wielkimi literami).

    Od PHP 4.0.6 ciąg formatujący obsługuje numerację i zmianę kolejności parametrów. Na przykład:


    Ten kod wyświetli komunikat „W drzewie jest 5 małp”. Teraz wyobraźmy sobie, że ciąg formatujący znajduje się w osobnym pliku, który następnie zostanie przetłumaczony na inny język i przepisujemy go w ten sposób:

    Przykład 2: Zmiana kolejności parametrów

    $format = "%s zawiera %d małp";

    ?>
    Wystąpił problem: kolejność specyfikatorów konwersji nie odpowiada kolejności argumentów. Nie chcemy zmieniać kodu i musimy określić, który argument odpowiada któremu specyfikatorowi konwersji.

    Przykład 3: Zmiana kolejności parametrów

    $format = „%2\$s zawiera %1\$d małp”;
    printf (format $, liczba $, lokalizacja $);
    ?>
    Numerowanie argumentów ma jeszcze jedno zastosowanie: pozwala na kilkakrotne wydrukowanie tego samego argumentu bez przekazywania do funkcji dodatkowych parametrów.

    Funkcja PHP sprintf umożliwia konwersję i dopasowanie wielu argumentów do pojedynczego ciągu znaków. Specyfikatory formatowania umożliwiają pracę ze znakami, ciągami znaków, liczbami całkowitymi i liczbami rzeczywistymi.

    Funkcja służy do formatowania informacji tabelarycznych oraz tworzenia szablonów. Można go wykorzystać do wstępnego sformalizowania danych źródłowych w określoną strukturę, zmieniając ich zawartość lub kolejność.

    Składnia funkcji PHP sprintf().

    Wynikiem funkcji jest ciąg znaków utworzony w określonej kolejności z określonych danych, parametrów funkcji:

    • ciąg formatujący;
    • lista argumentów.

    Do formatowania możesz użyć dowolnego projektu i logiki, w tym tagów HTML. Chociaż nie ma żadnych ograniczeń w używaniu sprintf, podręcznik PHP definiuje specyfikatory konwersji bardziej w kierunku informacji liczbowych.

    Element formatu zaczyna się od znaku % i kończy znakiem kwalifikatora. Większość możliwości formatowania leży w obszarze informacji numerycznych. Możliwość konwersji liczb na format binarny i szesnastkowy jest bardzo praktyczna. Tutaj funkcja sprintf w PHP nie jest warta pisania zamiennika.

    Powyższy przykład ilustruje zasady nazewnictwa argumentów i odróżniania specyfikatora x od X. Prawidłowe użycie odwołań do sekwencji sformatowanych argumentów jest ważne dla uzyskania prawidłowego wyniku. Numeracja zawsze zaczyna się od 1.

    Kolejność linków nie ma znaczenia, ale warto pamiętać: funkcja PHP sprintf uwzględnia wszystkie elementy % (bez podawania numeru argumentu) po kolei na liście ogólnej. Ani liczba, ani kolejność elementów % określonych konkretnymi numerami parametrów nie ma nic wspólnego z numeracją listy ogólnej.

    Opis przykładu użycia sprintf w PHP

    Jeśli nie jest bezpośrednio możliwe zarządzanie argumentem jako ciągiem znaków, wówczas zarządzanie ciągiem formatującym i wysyłanie informacji cyfrowych do ciągu wynikowego nie stanowi problemu.

    W pierwszych dwóch wierszach przykładu (wyjście argumentów Arg1, Arg2c i Arg2p) pierwszy argument - ciąg znaków (nazwa pozycji) jest wyprowadzany w niezmienionej postaci. Trzeci argument zajmuje 12 (14) znaków na wyjściu. Pierwsza linia uzasadnia liczbę po lewej stronie zerami o łącznej długości 12 znaków. Po kropce znajdują się cztery znaki. Druga linia uzasadnia liczbę znajdującą się po prawej stronie (część ułamkową) do 14 znaków. Znakiem, który należy ustawić w prawo, jest symbol -.

    Ciąg formatujący jest zwykłym ciągiem znaków. Można do niego wstawiać wyrażenia obliczone. W tym przypadku wstawki ($cL) i ($cR) służą do podświetlenia innej liczby. Dzięki temu ciąg formatujący stał się jaśniejszy i łatwiejszy do zapisania we wszystkich przykładach.

    Generowanie ciągu formatującego

    Praca PHP w języku rosyjskim, czyli funkcja sprintf, to praca tłumacza w naturalnym i wygodnym środowisku. Właściwie strona HTML ze wstawkami kodu PHP reprezentuje dowolny kontekst w dowolnym języku. To nie jest swoboda, jaką JavaScript zapewnia w środowisku przeglądarki.

    Aby wyprowadzić treść rosyjską w PHP, nie musisz kodować cyrylicy, ale czasami musisz użyć funkcji konwersji iconv(). W każdym razie wszystko jest dostępne i czytelne.

    Tekst umożliwiający wstawienie kodu PHP na stronę HTML jest jasny i odpowiedni. Użycie w ciągu znaków:

    Wartość zmiennej ABC=($ABC) jednostek

    Wstawienie ($ABC) ma znaczenie tylko raz i jest wykonywane tylko raz.

    Funkcje wykonywania kodu PHP na stronie

    Interpretator tylko raz przegląda stronę i tylko raz zastępuje wstawki ($ABC) ich wartościami. Programista może według własnego uznania użyć tego wyrażenia "tylko raz", zmuszając PHP do wielokrotnego zbliżania się do pożądanego rezultatu.

    W każdym razie po wysłaniu strony HTML do przeglądarki nie ma w niej kodu PHP.

    Jeśli element strony z przeglądarki zainicjuje kontakt z serwerem, może uruchomić nowy skrypt PHP. Tutaj wstawienia ($ABC) są bardzo względne i nie ma gwarancji poprawnego wyniku. Ale użycie sprintf w PHP to dynamika takiej możliwości.

    Programista może nie tylko uzyskać pożądane wykonanie takiego wstawienia, ale także zmienić linię, do której przekaże żądaną wartość.

    Moment tworzenia treści

    Naturalne jest wykorzystanie potencjału PHP w zakresie generowania wstawek do strony HTML, jako narzędzia do generowania całej strony. Tutaj zaczyna się witryna. Gdy tylko strona zostanie utworzona, a użytkownik faktycznie wejdzie na witrynę, zgodnie z nowoczesnymi pomysłami:

    • strony nie można zmienić;
    • tęsknię za użytkownikiem To samo to jest zabronione.

    W rzeczywistości użytkownik wszedł na stronę i otrzymał pierwszą odpowiedź w postaci kodu HTML. Całkowicie błędne jest zmienianie tej odpowiedzi - oznacza to poinformowanie odwiedzającego, że strona to zmienia. Strona musi jednak odpowiednio reagować na działania odwiedzającego i z jego inicjatywy.

    Pierwszą reakcją jest przybycie gościa. Akcja odwiedzającego to odpowiednia reakcja strony i jej przygotowanie na wszystkie oczekiwane kolejne działania odwiedzającego.

    Znacząca część odpowiedzialności za dynamikę strony z inicjatywy odwiedzającego przypada na JavaScript, który jednak funkcjonuje wyłącznie w przeglądarce i może jedynie wysyłać żądania AJAX do serwera. Każde wywołanie serwera może uruchomić skrypt PHP. Jednak moment utworzenia strony i moment odpowiedzi na żądanie znacznie się różnią.

    Funkcja PHP sprintf jest idealnym narzędziem do dynamicznego generowania szablonu odpowiedzi i wypełniania go żądaną wartością.

    Zmiana kodu PHP w czasie wykonywania

    Idea dynamiki kodu narodziła się wraz z pierwszym językiem programowania i dziś jest obecna w każdym współczesnym języku programowania.

    Wykonywanie kodu za pomocą eval (wiersz kodu) jest dziś uważane za lukę w zabezpieczeniach, ale jest równie popularne, jak niebezpieczne.

    Aby zmienić kod w czasie wykonywania, nie musisz już używać funkcji eval(). To raczej szybkie śniadanie, wykonanie jednego, dwóch poleceń, niż praktyczny fundament do zbudowania pożądanej dynamiki.

    Funkcja PHP sprintf() umożliwia zaprojektowanie szablonu skryptu, na przykład kodu obiektowego, który zostanie wywołany, gdy nastąpi określona akcja odwiedzającego. Przyjęta praktyka zapisywania brył obiektów w formie niezależnych plików jest idealnym rozwiązaniem umożliwiającym ich zmianę w trakcie funkcjonowania serwisu.

    Korzystanie z narzędzi uzupełniających funkcjonalność sprintf() pozwala nie tylko zmieniać obiekty wykorzystywane w wyniku działań konkretnego odwiedzającego, ale także przenosić tę dynamikę na pracę z innymi odwiedzającymi: jest to rozwój witryny, dynamika jego funkcjonalności, gromadzenie doświadczenia zawodowego i wiedzy.

    Drukuje ciąg, wartość zmiennej lub wyrażenie.
    Składnia:

    Drukuj(string arg)

    Funkcja print() wypisuje argument arg, który może być zmienną lub wyrażeniem.

    vsprintf()

    Zwraca sformatowany ciąg znaków (PHP 4 >= 4.1.0, PHP 5)

    Opis:

    String vsprintf (format ciągu, argumenty tablicowe)

    Ta funkcja jest podobna do sprintf(), ale pobiera tablicę, a nie zmienną liczbę argumentów.

    Drukuje jedną lub więcej wartości.
    Składnia:

    Echo(ciąg arg1, ciąg ...)

    Funkcja echo() wyświetla wartości wymienionych parametrów.
    echo() jest w rzeczywistości konstrukcją językową, więc nie wymaga nawiasów, nawet jeśli używanych jest wiele argumentów.
    echo "Podziały wierszy obecne w kodzie są zapisywane i wykorzystywane w wynikach."
    „aby uniknąć tego użycia”.
    "Operator łączenia";

    Wyprowadź sformatowany ciąg.
    Składnia:

    Int printf(format ciągu [, argumenty mieszane, ...]);

    Robi to samo, co sprintf(), tyle że wynikowy ciąg nie jest zwracany, ale wysyłany do przeglądarki użytkownika.

    Wykonuje formatowanie ciągu z podstawieniem zmiennych.
    Składnia:

    Sprintf($format [,args, ...])

    Funkcja ta zwraca ciąg znaków zbudowany z ciągu formatującego zawierającego pewne znaki specjalne, które później zostaną zastąpione wartościami odpowiednich zmiennych na liście argumentów.
    Ciąg formatujący $format może zawierać polecenia formatujące poprzedzone znakiem %.
    Wszystkie pozostałe znaki są kopiowane do ciągu wyjściowego w niezmienionej postaci. Każdy specyfikator formatu (tzn. znak % i następujące polecenia) odpowiada jednemu i tylko jednemu parametrowi określonemu po parametrze $format. Jeśli chcesz umieścić % w tekście jako zwykły symbol, musisz go podwoić:

    Echo sprintf("Procent wynosił %d%%",$procent);

    Każdy specyfikator formatu zawiera maksymalnie pięć elementów (w kolejności, w jakiej występują po znaku %):

    Opcjonalny specyfikator rozmiaru pola, który określa, ile znaków zostanie przydzielonych dla wartości wyjściowej.
    Jako znaki zastępcze (jeśli wartość jest mniejsza niż rozmiar pola, w którym ma zostać wyświetlona)
    można użyć spacji lub 0, wartością domyślną jest spacja. Możesz określić dowolny inny znak wypełniający, jeśli określisz go w ciągu formatującym, poprzedzonym apostrofem.
    Opcjonalny specyfikator wyrównania, który określa, czy wynik będzie wyrównany do prawej, czy lewej strony pola. Domyślnym ustawieniem jest wyrównanie do prawej, ale można określić wyrównanie do lewej, określając symbol - (minus).

    Opcjonalna liczba określająca rozmiar pola, w którym wyświetlana jest wartość. Jeśli wyniku nie ma w polu, to „wyjdzie” poza krawędzie tego pola, ale nie zostanie obcięty.
    Opcjonalna liczba, poprzedzona kropką „.”, która określa, ile miejsc dziesiętnych będzie w wynikowym ciągu.
    Ten specyfikator jest brany pod uwagę tylko wtedy, gdy wyprowadzana jest liczba zmiennoprzecinkowa, w przeciwnym razie jest ignorowany.
    Na koniec wymagany (uwaga – jedyny wymagany!) specyfikator typu wartości, która zostanie umieszczona w ciągu wyjściowym:

    b - następny argument z listy jest wyprowadzany jako binarna liczba całkowita
    c - wyświetlany jest symbol z kodem podanym w argumencie
    d - liczba całkowita
    f - liczba zmiennoprzecinkowa
    o - liczba całkowita ósemkowa
    s - ciąg znaków
    x - szesnastkowa liczba całkowita z małymi literami a-z
    X to szesnastkowa liczba całkowita pisana wielkimi literami A–Z

    Oto jak określić precyzję liczb zmiennoprzecinkowych:

    $pieniądze1 = 68,75;
    $pieniądze2 = 54,35;
    $pieniądze = $pieniądze1 + $pieniądze2;
    // echo $money wyświetli „123,1”...
    $sformatowany = sprintf("%01.2f", $pieniądze);
    // echo $sformatowane wyświetli „123.10”!

    Oto przykład wyprowadzenia liczby całkowitej poprzedzonej wymaganą liczbą zer:

    $isodate=sprintf("%04d-%02d-%02d",$rok,$miesiąc,$dzień);

    Interpretuje ciąg zgodnie z formatem i wprowadza wartości do zmiennych.

    Składnia:

    Mieszane sscanf(string str, format string [, string var1 ...])

    Funkcja sscanf() jest przeciwieństwem funkcji printf().

    Interpretuje ciąg znaków zgodnie z formatem, podobnie jak w specyfikacji printf().

    Gdy zostaną określone tylko dwa argumenty, wynikowe wartości zostaną zwrócone w tablicy.

    // pobranie numeru seryjnego $serial = sscanf("SN/235-0001", "SN/%3d-%4d");
    echo $serial*10000+$serial; // wyniki: 2350001
    // i data produkcji$date = "01 stycznia 2000";
    list($miesiąc, $dzień, $rok) = sscanf($data, "%s %d %d");
    echo "Data: $rok-.substr($miesiąc,0,3)."-$dzień";
    // dane wyjściowe: 2000-sty-01

    Przy określaniu dodatkowych opcjonalnych parametrów (należy je przekazać przez referencję)

    funkcja zwraca ich liczbę. Zmienne, które nie otrzymują wartości, nie są brane pod uwagę w wartości zwracanej.

    // wygeneruj rekord XML z ciągu $auth = "765tLewis Carroll";
    $n = sscan($auth,"%dt%s %s", &$id, &$first, &$last);
    Echo "
    Najpierw $
    $ostatni
    N";

    fprintf()

    Opis:

    Int fprintf (uchwyt zasobu, format ciągu [, argumenty mieszane])

    Zapisuje ciąg utworzony przy użyciu ciągu formatującego do strumienia, którego uchwyt jest przekazywany do obsługi. Argument formatu został szczegółowo omówiony w opisie funkcji sprintf().

    fprintf(): dopełnienie zerami


    powrót;

    fprintf($fp, "%04d-%02d-%02d", $rok, $miesiąc, $dzień);
    // zapisuje sformatowaną datę do pliku date.txt
    ?>

    fprintf(): formatowanie wartości pieniężnych

    if (!($fp = fopen("waluta.txt", "w")))
    powrót;

    $pieniądze1 = 68,75;
    $pieniądze2 = 54,35;
    $pieniądze = $pieniądze1 + $pieniądze2;
    // echo $money wyświetli „123.1”;
    $len = fprintf($fp, "%01.2f", $pieniądze);
    // ciąg "123.10" zostaje zapisany do pliku waluta.txt

    echo "$len bajtów zapisanych do pliku waluta.txt";
    ?>

    vfprintf()

    Zapisuje sformatowany ciąg do strumienia (PHP 5)

    Opis:

    Int vfprintf (uchwyt zasobu, format ciągu, argumenty tablicowe)

    Zapisuje ciąg znaków sformatowany zgodnie z formatem do zasobu strumieniowego określonego przez uchwyt. Formatowanie odbywa się podobnie do sprintf().

    Działa tak samo jak fprintf(), ale pobiera tablicę argumentów, a nie zmienną liczbę argumentów.

    Zwraca długość ciągu wyjściowego.

    Zobacz także: printf(), sprintf(), sscanf(), fscanf(), vsprintf() i number_format().
    Przykłady

    vfprintf(): liczby całkowite uzupełnione zerami

    if (!($fp = fopen("data.txt", "w")))
    powrót;

    vfprintf($fp, "%04d-%02d-%02d", tablica($rok, $miesiąc, $dzień));
    // zapisze sformatowaną datę ISO do date.txt
    ?>

    vprintf()

    Wysyła sformatowany ciąg znaków (PHP 4 >= 4.1.0, PHP 5)

    Opis:

    Int vprintf(format ciągu, argumenty tablicowe)

    Wyprowadza wartości tablicy args, sformatowane zgodnie z argumentem format opisanym w dokumentacji funkcji sprintf().

    Ta funkcja jest podobna do printf(), ale pobiera tablicę, a nie zmienną liczbę argumentów.

    Zwraca długość ciągu wyjściowego

    format liczbowy()

    Formatuje liczbę z separacją grup (PHP 3, PHP 4, PHP 5)

    Opis:

    String number_format (liczba zmiennoprzecinkowa [, int dziesiętne])

    string number_format (liczba zmiennoprzecinkowa, int dziesiętne, ciąg dec_point, ciąg tysiące_sep)

    number_format() zwraca sformatowaną liczbę. Funkcja przyjmuje jeden, dwa lub cztery argumenty (nie trzy):

    Jeśli zostanie przekazany tylko jeden argument, liczba zostanie sformatowana bez części ułamkowej, ale z przecinkiem („”,”) pomiędzy grupami cyfr po 3.

    Jeśli zostaną przekazane dwa argumenty, liczba zostanie sformatowana z miejscami dziesiętnymi po kropkach („.”) i przecinkach („”,”) pomiędzy grupami cyfr po 3.

    Jeśli zostaną przekazane wszystkie cztery argumenty, liczba zostanie sformatowana z ułamkami dziesiętnymi po kropce i z separatorem pomiędzy grupami cyfr po 3, przy użyciu punktu dec_ jako przecinka dziesiętnego i tysiąca_sep jako separatora grupy.

    Używany jest tylko pierwszy znak linii tys._sep. Na przykład, jeśli przekażesz foo jako tysiące_sep, aby sformatować liczbę 1000, funkcja number_format() zwróci 1f000.

    Przykład użycia number_format()

    We Francji powszechnie stosuje się 2 miejsca po przecinku („”,”) i spację („”) jako separator grup. To formatowanie uzyskuje się za pomocą następującego kodu:

    $liczba = 1234,56;

    // Format angielski (domyślny)
    $english_format_number = number_format($number);
    // 1,234

    //Format francuski
    $nombre_format_francais = format_liczby($liczba, 2, ",", " ");
    // 1 234,56

    $liczba = 1234,5678;

    // Format angielski bez separatorów grup
    $english_format_number = number_format($number, 2, ".", "");
    // 1234.57

    Dla sformatowane wyjście w PHP Wykorzystywane są dwie wspaniałe funkcje: printf() I sprintf(). Mają całkiem spore możliwości, które omówimy w tym artykule.

    Od razu powiem, że różnica pomiędzy printf() I sprintf() tyle tylko, że pierwszy wyprowadza ciąg znaków bezpośrednio do strumienia wyjściowego (na przykład do przeglądarki), a drugi go zwraca.

    Parametr funkcji to ciąg znaków, który ma znaki z %, zwane specyfikatorami, I znaki bez %, zwane dyrektywami. Dyrektywy pozostają niezmienione po sformatowaniu, ale specyfikator prowadzi do podstawienia innych parametrów funkcji (zgodnie z linią formatu).

    Istnieje kilka specyfikatorów, które są połączone w jedną grupę (jedna wspólna % ), którego kolejność jest następująca:

    1. Specyfikator dopełnienia. Umożliwia wypełnienie ciągu znaków o określonym rozmiarze. Domyślnie tym znakiem jest spacja.
    2. Specyfikator wyrównania. Ten specyfikator pozwala ustawić wyrównanie linii w prawo (domyślnie) lub w lewo (jeśli określisz „ - ").
    3. Specyfikator minimalnej szerokości. Jeśli wynik ma krótszą długość ciągu, zostanie on wypełniony znakami ze specyfikatora dopełnienia do określonej szerokości.
    4. Specyfikator precyzji. Umożliwia określenie liczby miejsc po przecinku dla liczby zmiennoprzecinkowej.
    5. Specyfikator typu. Ten specyfikator określa typ danych wyjściowych. Jest ich 8, ale w praktyce stosowane są następujące:
      • D- liczba całkowita w postaci dziesiętnej.
      • F- liczba zmiennoprzecinkowa w postaci dziesiętnej.
      • S- linia.

    Spójrzmy na klasykę przykład wypisywania sformatowanej daty:

    $rok = 2012;
    $miesiąc = 9;
    $dzień = 28;
    printf("Data zapisu: %02d.%02d.%04d", $dzień, $miesiąc, $rok);
    ?>

    Nietrudno zgadnąć, że wynikiem będzie następujący wiersz: „ Data napisania artykułu: 28.09.2012„. Proszę zwrócić uwagę, ile grup specyfikatorów, ile parametrów jest przesyłanych oprócz samego formatu. Linia „ Data napisania artykułu:" jest dyrektywą i pozostaje niezmieniona. Teraz spójrzmy dla przykładu na drugą grupę specyfikatorów, która odpowiada za miesiąc. Pozostałe grupy są absolutnie identyczne.

    • %
    • 0 - znak, którym określony parametr zostanie wypełniony do wymaganej szerokości.
    • 2 - minimalna szerokość. Odpowiednio, jeśli długość linii jest mniejsza, zostanie ona wypełniona 0 .
    • D- zostanie wyprowadzona jako liczba całkowita. Jeżeli umieścisz np. B(inny specyfikator typu), wówczas zostanie wyświetlona ta sama liczba, ale w postaci binarnej.

    Dam ci inny popularny przykład użycia funkcji printf (i sprintf()) związane z zaokrąglaniem liczb:

    $x = 12,596123;
    printf("%06.2f", $x); // Wyświetlone zostanie „012.60”.
    ?>

    Spójrzmy na pierwszy argument funkcji printf():

    • % - początek grupy specyfikatorów.
    • 0 - znak do wypełnienia do wymaganej długości.
    • 6 - wymagana długość (punkt jest oczywiście również wliczony w tę długość).
    • .2 - dokładność do 2 miejsca dziesiętne.
    • F- rodzaj liczb zmiennoprzecinkowych. Właściwie zaokrąglanie ma sens tylko dla tego typu.

    Jak widzisz, funkcje printf() i sprintf(). ułatwiają rozwiązywanie pozornie skomplikowanych problemów. Dlatego zdecydowanie musisz je mieć w swoim arsenale.