В предыдущей статье мы разобрали функции форматного вывода . Так вот, имеется и обратная функция, которая называется sscanf() . И именно о функции sscanf() в PHP я сейчас и расскажу.

Функция sscanf в PHP

В предыдущей статье мы разобрали функции форматного вывода. Так вот, имеется и обратная функция, которая называется sscanf(). И именно о функции sscanf() в PHP я сейчас и расскажу.

Эта функция, как я уже писал, полная противоположность функциям printf() и sprintf(). У функции sprintf() 2 обязательных аргумента:

  1. $str - строка, которую необходимо обработать.
  2. $format - строка с форматом. Этот формат абсолютно идентичен формату в функции printf().

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

Давайте разберём пример из предыдущей статьи, но дополнив его и обратными действиями:

<?php
  $year = 2012;
  $month = 9;
  $str = sprintf("Дата написания статьи: %02d.%02d.%04d", $day, $month, $year);
  $array = sscanf($str, "Дата написания статьи: %02d.%02d.%04d");
  print_r($array);
  sscanf($str, "Дата написания статьи: %02d.%02d.%04d", $day, $month, $year);
  echo "<br />$day.$month.$year";
?>

В данном примере мы сначала получили строку $str, согласно требуемому формату. Дальше мы, используя функцию sscanf(), получили обратно все значения переменных в виде массива. А после мы вызвали эту же функцию sscanf(), но с дополнительными аргументами, названиями переменных, в которые нам требовалось поместить значения. Затем мы полученные значения также вывели.

В принципе, данную задачу можно было бы легко решить с помощью регулярных выражений, поэтому ценность данной функции не так невелика, как, например, printf(), но иногда в разы короче и проще будет использовать именно функцию sscanf(), чем регулярные выражения. И пример в этом материале является одним из таких случаев.