fscanf în PHP

Citește o linie dintr-un fișier și extrage valori din ea după un format, de exemplu „%s %d”.

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

Ce face fscanf

fscanf citește linia următoare și o interpretează după un șablon, ca sscanf: %s un cuvânt, %d un număr întreg, %f un număr cu zecimale. Valorile găsite sunt returnate într-un tablou sau puse în variabilele date după format.

Este potrivit pentru fișiere cu format fix, simplu. Pentru CSV folosește fgetcsv.

Parametri

Parametru Descriere
$stream Resursa returnată de fopen.
$format Șablonul liniei.
$vars Opțional. Variabile în care se pun valorile găsite.

Ce returnează

Un tablou cu valorile; cu variabile, numărul de valori găsite. La sfârșitul fișierului, false.

Exemple

Exemplul 1: Nume și vârstă pe fiecare linie

<?php
file_put_contents("persoane.txt", "Ana 25\nIon 40\n");
$f = fopen("persoane.txt", "r");

while ($date = fscanf($f, "%s %d")) {
    [$nume, $varsta] = $date;
    echo "$nume are $varsta de ani\n";
}
fclose($f);

Rezultat

Ana are 25 de ani
Ion are 40 de ani

Greșeli frecvente

  • Folosești %s pentru un nume cu spații, de exemplu „Ana Maria”. %s se oprește la primul spațiu.

Comenzi înrudite

  • fgets: Citește o linie dintr-un fișier deschis cu fopen.
  • fgetcsv: Citește o linie dintr-un fișier CSV și o împarte în coloane.
  • sscanf: Citește valori dintr-un text după un șablon, inversul lui sprintf.