(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
sscanf — Разбирает строку по условиям формата
Функция sscanf() — аналог функции
printf() для входных данных.
Функция sscanf() сканирует строку string
и интерпретирует строку по условиям формата format
.
Любые пробельные символы в строке формата соответствуют любым
пробельным символам во входной строке. Это значит, что даже символ
табуляции (\t
) в строке формата соответствует одному
символу пробела во входной строке.
string
Входная строка (string) для разбора.
format
Формат интерпретации строки string
,
который описывает документация к функции sprintf()
со следующими отличиями:
F
, g
, G
и b
.
D
обозначает десятичное число.
i
обозначает целое число с определением системы счисления.
n
обозначает количество символов, которые функция уже обработала.
s
останавливает чтение при любом пробельном символе.
*
вместо спецификатора преобразования argnum$
подавляет
присваивание этого спецификатора преобразования.
vars
Необязательные переменные, которые передаются по ссылке и которые будут содержать значения с результатами разбора строки.
Функция возвращает массив с результатами разбора, если в функцию передали только два аргумента. Функция вернёт количество присвоенных значений, если передали необязательные аргументы. Необязательные аргументы требуется передавать по ссылке.
Если параметр format
ожидает больше подстрок,
чем доступно в параметре string
,
вернётся значение null
.
Пример #1 Пример использования функции sscanf()
<?php
// Получаем серийный номер
list($serial) = sscanf("SN/2350001", "SN/%d");
// и дату изготовления
$mandate = "January 01 2000";
list($month, $day, $year) = sscanf($mandate, "%s %d %d");
echo "Узел $serial изготовили: $year-" . substr($month, 0, 3) . "-$day\n";
?>
Функция вернёт количество присвоенных значений, если передали необязательные аргументы.
Пример #2 Пример использования функции sscanf() с необязательными аргументами
<?php
// Получаем имя автора и формируем запись в формате 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";
?>