Справочник по PHP : Функции работы с данными : Строковые функции : Форматирование и вывод строк

Материал из Справочник Web-языков.

Перейти к: навигация, поиск
Главная  ::. PHP  ::. Функции работы с данными  ::. Строковые функции  ::. Форматирование и вывод строк

Содержание

[править] print

Выводит строку, значение переменной или выражение.

Синтаксис:

print(string arg)

Функция print() выводит аргумент arg, в качестве которого может быть переменная или выражение.

[править] echo

Производит вывод одного или нескольких значений.

Синтаксис:

echo(string arg1, string [argn]...)

Функция echo() выводит значения перечисленных параметров.

echo() - фактически языковая конструкция, поэтому для нее не обязательны скобки, даже если используется несколько аргументов.

echo "Перенос на следующую строку,
имеющийся в коде, сохраняется
и используется при выводе"
.
"чтобы избежать этого используйте".
"оператор конкатенации";

[править] printf

Вывод отформатированной строки.

Синтаксис:

int printf(string format [, mixed args, ...]);

Делает то же самое, что и sprintf(), только результирующая строка не возвращается, а направляется в браузер пользователя.

[править] sprintf

Производит форматирование строки с подстановкой переменных.

Синтаксис:

sprintf($format [,args, ...])

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

Строка форматирования $format может включать в себя команды форматирования, предваренные символом %. Все остальные символы копируются в выходную строку как есть. Каждый спецификатор формата (то есть, символ % и следующие за ним команды) соответствуют одному, и только одному параметру, указанному после параметра $format. Если же нужно поместить в текст % как обычный символ, необходимо его удвоить:

echo sprintf("The percentage was %d%%",$percentage);

Каждый спецификатор формата включает максимум пять элементов (в порядке их следования после символа %):

  • Необязательный спецификатор размера поля, который указывает, сколько символов будет отведено под выводимую величину. В качестве символов-заполнителей (если значение имеет меньший размер, чем размер поля для его вывода) может использоваться пробел или 0, по умолчанию подставляется пробел. Можно задать любой другой символ-наполнитель, если указать его в строке форматирования, предварив фпострофом.
  • Опциональный спецификатор выравнивания, определяющий, будет результат выровнен по правому или по левому краю поля. По умолчанию производится выравнивание по правому краю, однако можно указать и левое выравнивание, задав символ - (минус).
  • Необязательное число, определяющее размер поля для вывода величины. Если результат не будет в поле помещаться, то он "вылезет" за края этого поля, но не будет усечен.
  • Необязательное число, которое предварено точкой ".", предписывающее, сколько знаков после запятой будет в результирующей строке. Этот спецификатор учитывается только в том случае, если происходит вывод числа с плавающей точкой, в противном случае он игнорируется.
  • Наконец, обязательный (заметьте - единственный обязательный!) спецификатор типа величины, которая будет помещена в выходную строку:
    • b - очередной аргумент из списка выводится как двоичное целое число
    • c - выводится символ с указанным в аргументе кодом
    • d - целое число
    • f - число с плавающей точкой
    • o - восьмеричное целое число
    • s - строка символов
    • x - шестнадцатиричное целое число с маленькими буквами a-z
    • X - шестнадцатиричное целое число с большими буквами A-Z

Вот как можно указать точность представления чисел с плавающей точкой:

$money1 68.75;
$money2 54.35;
$money $money1 $money2;
// echo $money выведет "123.1"...
$formatted sprintf ("%01.2f"$money);
// echo $formatted выведет "123.10"!

Вот пример вывода целого числа, предваренного нужным количеством нулей:

$isodate=sprintf("%04d-%02d-%02d",$year,$month,$day);

[править] sscanf

Производит интерпретацию строки согласно формату и занесение значений в переменные.

Синтаксис:

mixed sscanf(string str, string format [, string var1 ...])

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

// получение серийного номера
$serial sscanf("SN/235-0001""SN/%3d-%4d");
echo 
$serial[0]*10000+$serial[1]; // выводит: 2350001
// и даты изготовления
$date "January 01 2000";
list(
$month$day$year) = sscanf($date"%s %d %d");
echo 
"Дата: $year-".substr($month,0,3)."-$dayn";
// выводит: 2000-Jan-01

При указании дополнительных необязательных параметров (их следует передавать по ссылке) функция возвращает их число. Те переменные, которые не получают значений, в возвращаемом значении не учитываются.

// генерируем XML запись из строки
$auth "765tLewis Carroll";
$n sscan($auth,"%dt%s %s", &$id, &$first, &$last);
echo 
"<author id="$id">
  <firstname>$first</firrstname>
  <surname>$last</surname>
</author>n"
;
Личные инструменты
8.10999178886