(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
sscanf — Analiza una cadena utilizando un formato
sscanf() es la función inversa de
printf(). sscanf() lee
datos de la cadena string
e
los interpreta según el formato format
.
Todos los caracteres en blanco en la cadena format
corresponden
a un carácter en blanco en la cadena string
. Esto significa que
incluso una tabulación (\t
) en la cadena de formato puede corresponder a
un simple espacio en la cadena str
.
string
La cadena a analizar.
format
The interpreted format for string
, which is
described in the documentation for sprintf() with
following differences:
F
, g
, G
and
b
are not supported.
D
stands for decimal number.
i
stands for integer with base detection.
n
stands for number of characters processed so far.
s
stops reading at any whitespace character.
*
instead of argnum$
suppresses
the assignment of this conversion specification.
vars
Opcionalmente, se pueden pasar variables en este parámetro, por referencia que contendrán los valores del análisis.
Si solo se proporcionan dos parámetros, los valores encontrados se devolverán como un array. De lo contrario, si se proporcionan los parámetros opcionales, la función devolverá el número de valores asignados. El parámetro opcional debe pasarse por referencia.
Si hay más subcadenas esperadas en el parámetro
format
que las disponibles en
string
, entonces null
será devuelto.
Ejemplo #1 Ejemplo con sscanf()
<?php
// Lectura de un número de serie
list($serial) = sscanf("SN/2350001", "SN/%d");
// y la fecha de fabricación
$mandate = "January 01 2000";
list($month, $day, $year) = sscanf($mandate, "%s %d %d");
echo "El producto $serial fue fabricado el: $year-" . substr($month, 0, 3) . "-$day\n";
?>
Si se pasan parámetros opcionales, sscanf() devolverá el número de valores asignados.
Ejemplo #2 sscanf() - uso de parámetros opcionales
<?php
// lee la información del autor y genera una entrada 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";
?>