(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
sscanf — Analyse une chaîne à l'aide d'un format
sscanf() est l'inverse de la fonction
printf(). sscanf() lit
des données dans la chaîne string
, et
l'interprète en fonction du format format
,
qui est décrit dans la documentation de la fonction sprintf().
Tous les caractères blancs dans la chaîne format
correspondent
à un caractère blanc dans la chaîne string
. Cela signifie que
même une tabulation \t dans la chaîne de format peut correspondre à
un simple espace dans la chaîne str
.
string
La chaîne à analyser.
format
Le format interprété pour la chaîne string
,
qui est décrit dans la documentation de la fonction
sprintf() avec les différences suivantes :
F
, g
, G
et
b
ne sont pas supportés.
D
correspond aux nombres décimaux.
i
correspond aux entiers avec une détection de la base.
n
correspond aux nombres de caractères analysés.
s
arrête la lecture à n'importe quel caractère d'espace.
vars
Optionnellement, vous pouvez passer des variables dans ce paramètre, par référence qui contiendront les valeurs de l'analyse.
Si seulement deux paramètres sont fournis, les valeurs trouvées seront retournées sous forme de tableau. Sinon, si le paramètre optionnel sont fourni, la fonction retournera le nombre de valeurs assignées. Le paramètre optionnel doit être passé par référence.
S'il y a plus de sous-chaînes attendus dans le paramètre
format
, qu'il y a de disponibles dans
string
, alors null
sera retourné.
Exemple #1 Exemple avec sscanf()
<?php
// Lecture d'un numéro de série
list($serial) = sscanf("SN/2350001", "SN/%d");
// et la date de fabrication
$mandate = "January 01 2000";
list($month, $day, $year) = sscanf($mandate, "%s %d %d");
echo "Le produit $serial a été fabriqué le : $year-" . substr($month, 0, 3) . "-$day\n";
?>
Si des paramètres optionnels sont passés, sscanf() retournera le nombre de valeurs assignées.
Exemple #2 sscanf() - utilisation des paramètres optionnels
<?php
// lit les informations d'auteur, et génère une entrée DocBook
$auth = "24\tLewis Carroll";
$n = sscanf($auth, "%d\t%s %s", $id, $first, $last);
echo "<author id='$id'>
<firstname>$first</firstname>
<surname>$last</surname>
</author>\n";
?>