sscanf

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

sscanfРазбирает строку по условиям формата

Описание

sscanf(string $string, string $format, mixed &...$vars): array|int|null

Функция 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"
;

?>

Смотрите также

  • printf() - Выводит отформатированную строку
  • sprintf() - Возвращает отформатированную строку
  • fprintf() - Записывает отформатированную строку в поток
  • vprintf() - Выводит отформатированную строку
  • vsprintf() - Возвращает отформатированную строку
  • vfprintf() - Записывает отформатированную строку в поток
  • fscanf() - Обрабатывает данные из файла по условиям формата
  • number_format() - Форматирует число с группировкой классов многозначного числа
  • date() - Форматирует метку времени эпохи Unix