(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.
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 string.
stringformat
Le format interprété pour string décrit
dans la documentation de la sprintf() avec les différences suivantes :
F, g, G et
b ne sont pas supportés.
D représente un nombre décimal.
i représente un nombre entier avec détection de base.
n représente le nombre de caractères traités à ce stade.
s arrête la lecture à chaque caractère d'espacement.
* au lieu de argnum$ supprime
l'affectation de cette spécification de conversion.
varsSi seulement deux paramètres sont fournis, les valeurs trouvées seront retournées sous la forme d'un array. Sinon, si les paramètres optionnels sont fournis, 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 attendues dans le paramètre
format, qu'il y a de disponibles dans
string, alors null sera retourné.
Lorsque des paramètres optionnels sont utilisés et que la fin de la chaîne
string est atteinte avant qu'aucune valeur n'ait
été analysée, -1 est 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";
?>