fscanf

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

fscanfParses input from a file according to a format

Descrierea

fscanf ( resource $stream , string $format , mixed &...$vars ) : array|int|false|null

The function fscanf() is similar to sscanf(), but it takes its input from a file associated with stream and interprets the input according to the specified format, which is described in the documentation for sprintf().

Any whitespace in the format string matches any whitespace in the input stream. This means that even a tab \t in the format string can match a single space character in the input stream.

Each call to fscanf() reads one line from the file.

Parametri

stream

O resursă de tip indicator în sistemul de fișiere care este în mod tipic creată utilizând fopen().

format

Șirul de formatare este compus din zero sau mai multe directive: caractere obișnuite (în afară de %), care sunt copiate direct în rezultat și specificatori de conversie, fiecare având parametrul său.

Un specificator de conversie e compus după următorul prototip: %[argnum$][flags][width][.precision]specifier.

Argnum

Un întreg urmat de senmul dolar $, pentru a specifica ce argument de număr trebuie tratat în conversie.

Flags
Flag Descriere
- Alinierea spre stânga în limitele lungimii câmpului; Implicit se efectuează alinierea spre dreapta
+ Prefixează numerele pozitive cu semnul plus +; implicit doar numerele negative sunt prefixate cu semnul minus.
(spațiu) Completează rezultatul cu spații. Acesta este comportamentul implicit.
0 Completează numerele cu zerouri în stânga. Cu specificatorii s se poate de completat cu zerouri și în dreapta.
'(char) Completează rezultatul cu caracterul (char).

Width

Un număr întreg ce indică câte caractere (minimum) trebuie să aibă rezultatul conversiei.

Precision

Un punct ., urmat de un număr întreg, însemnătatea căruia depinde de specificator:

  • Pentru specificatorii e, E, f și F: acesta este numărul de cifre ce vor fi tipărite după punctul zecimal (implicit acesta este 6).
  • Pentru specificatorii g și G: acesta este numărul maxim de cifre semnificative ce va fi tipărit.
  • Pentru specificatorul s: acesta funcționează ca punct de oprire, stabilind limita maximă a numărului de caractere din șir.

Notă: Dacă punctul este specificat fără o valoare explicită pentru precizie, se presupune că aceasta este 0.

Notă: Încercarea de a folosi un specificator de poziție mai mare decât PHP_INT_MAX va genera avertizări.

Specifiers
Specifier Descriere
% Specifică caracterul procent. Nu este necesar vre-un argument.
b Argumentul este tratat ca un întreg și prezentat ca număr binar.
c Argumentul este tratat ca un întreg și prezentat ca caracter cu acest cod ASCII.
d Argumentul este tratat ca un întreg și prezentat ca număr zecimal (cu semn).
e Argumentul este tratat ca număr în notație exponențială (de ex. 1.2e+2). Specificatorul de precizie semnifică numărul de cifre după virgulă începând cu PHP 5.2.1. În versiuni anterioare el specifica numărul de cifre semnificative (cu una mai puțin).
E La fel ca și specificatorul e, dar folosește caracterul majuscul (de ex. 1.2E+2).
f Argumentul este tratat ca număr cu virgulă și prezentat ca atare (în dependență de setările de localizare).
F Argumentul este tratat ca număr cu virgulă și prezentat ca atare (fără a se ține cont de setările de localizare). Disponibil începând cu PHP 5.0.3.
g

Format general.

Fie că P este egal cu precizia, dacă nu este zero, 6 dacă precizia este omisă, sau 1 dacă precizia este zero. Atunci dacă o conversie cu stilul E ar avea un exponent X:

Dacă P > X ≥ −4, atunci conversia este de stilul f și precizia P − (X + 1). În caz contrar, conversia este de stilul e și precizia P − 1.

G La fel ca și specificatorul g, dar utilizează E și f.
o Argumentul este tratat ca întreg și prezentat ca număr octal.
s Argumentul este tratat și prezentat ca șir de caractere.
u Argumentul este tratat ca întreg și prezentat ca număr zecimal fără semn.
x Argumentul este tratat ca întreg și prezentat ca număr hexazecimal (cu caractere minuscule).
X Argumentul este tratat ca întreg și prezentat ca număr hexazecimal (cu caractere majuscule).

Avertizare

Specificatorul de tip c ignoră completarea cu spații și lungimea

Avertizare

Încercarea de a folosi o combinație din specificatori de șiruri de caractere și lungime cu seturi de caractere ce necesită mai mult de un octet per caracter poate da rezultate imprevizibile

Variabilele vor fi aduse la un tip potrivit pentru specificatorul:

Manipularea tipurilor
Tipul Specificatorii
string s
integer d, u, c, o, x, X, b
double g, G, e, E, f, F

vars

The optional assigned values.

Valorile întoarse

If only two parameters were passed to this function, the values parsed will be returned as an array. Otherwise, if optional parameters are passed, the function will return the number of assigned values. The optional parameters must be passed by reference.

If there are more substrings expected in the format than there are available within string, null will be returned. On other errors, false will be returned.

Exemple

Example #1 fscanf() Example

<?php
$handle 
fopen("users.txt""r");
while (
$userinfo fscanf($handle"%s\t%s\t%s\n")) {
    list (
$name$profession$countrycode) = $userinfo;
    
//... do something with the values
}
fclose($handle);
?>

Example #2 Contents of users.txt

javier  argonaut        pe
hiroshi sculptor        jp
robert  slacker us
luigi   florist it

A se vedea și

  • fread() - Binary-safe file read
  • fgets() - Gets line from file pointer
  • fgetss() - Gets line from file pointer and strip HTML tags
  • sscanf() - Parses input from a string according to a format
  • printf() - Output a formatted string
  • sprintf() - Return a formatted string