(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.
stringLa cadena a analizar.
format
El formato interpretado para string se describe
en la documentación de la sprintf() con las siguientes diferencias:
F, g, G y
b no son soportados.
D representa un número decimal.
i representa un número entero con detección de base.
n representa el número de caracteres tratados hasta este punto.
s detiene la lectura en cada carácter de espacio.
* en lugar de argnum$ elimina
la asignación de esta especificación de conversión.
varsOpcionalmente, 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";
?>