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

sscanf — Разбирает строку в соответствии с заданным форматом

Описание

mixed sscanf ( string $str , string $format [, mixed &$... ] )

Функция sscanf() похожа на функцию printf(), но используется не для вывода, а для ввода данных. sscanf() интерпретирует строку strв соответствии с форматом format, указанным в документации к функции sprintf().

Любые пробельные символы в строке формата соответствуют любым пробельным символам во входной строке. Это значит, что, например, символ табуляции \t в строке формата соответствует символу пробела во входной строке.

Список параметров

str

Обрабатываемая строка (string).

format

Формат, в соответствии с которым будет интерпретирована строка str, описанный в документации к функции sprintf() со следующими отличиями:

  • На функцию не влияют настройки локали.
  • FgG и b не поддерживаются.
  • D обозначает десятичное число.
  • i обозначает целое число с автоматическим определением системы счисления.
  • n обозначает обработанное количество символов на данный момент.
  • s остановить чтение на любом пробельном символе.
...

Необязательные переменные, передаваемые по ссылке, которым будут присвоены считанные значения.

Возвращаемые значения

Если переданы только эти два аргумента, будет возвращен массив. В противном случае, считанные из строки значения будут присвоены переменным, переданным через дополнительные аргументы, и будет возвращено количество присвоенных значений. Дополнительные аргументы должны передаваться по ссылке.

Если ожидается больше подстрок в параметре format, чем доступно в параметре str, то будет возвращено значение -1.

Примеры

Пример #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";
?>