Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.doc
Скачиваний:
0
Добавлен:
02.02.2020
Размер:
6.88 Mб
Скачать

Функции форматных преобразований строк

Язык PHP поддерживает ряд форматных функций вывода. Функция sprintf ($format [, mixed args]) – возвращает строку, созданную из аргументов в соответствии со строкой $format. Последняя включает команды форматирования, предваренные символом %. Пример:

<? // ppr27.php Использование sprintf()

$num = 5;

$location = "tree";

$format = "There are %d monkeys in the %s";

printf($format,$num,$location); // выведет: "There are 5 //monkeys in the tree".

//sprintf(): целые числа с заполнением нулями

$year = 3;

$month = 10;

$day = 11;

$dat = sprintf(" %03d-%03d-%02d ", $year, $month, $day);

echo $dat;

//sprintf(): Форматирование валюты

$money1 = 68.75;

$money2 = 54.35;

$money = $money1 + $money2;

echo $money;// will output "123.1";

$formatted = sprintf(" %01.2f", $money);

echo $formatted; //выдаст "123.10"

?>

Вывод:

There are 5 monkeys in the tree 003-010-11 123.1 123.10

Функция printf($format [, mixed args, ...]) выполняет то же, что и sprintf(), только направляет результирующую строку в браузер пользователя. Функция sscanf (str, format [,var1]) – читает из строки str и интерпретирует ее в соответствии с форматом. Символ в строке формата совпадает с символом в строке ввода.

<? // ppr28.php Использование sscanf()

$serial = sscanf("SN/23501","SN/%s",&$ser);

// получение серийного номера и даты изготовления

echo $serial,"<br>";

$mandate = "January 01 2011";

list($month, $day, $year) = sscanf($mandate,"%s %d %d");

echo "Item $ser was manufactured on: $year-" .substr($month,0,3)."-$day\n";

// функция возвращает количество присвоенных значений.

?>

Вывод:

1

Item 23501 was manufactured on: 2011-Jan-1

Использование форматных функций ограничено из-за их низкой скорости: для разбора строк чаще привлекают регулярные выражения или функцию explode(). Функция array explode (разд, $str[, int n]) де­лит строку на элементы и возвращает элементы в виде массива. Количе­ство элементов может ограничиваться параметром n. Функция string implode (разд, array фрагменты) – объединяет массив в строку. Пример:

<? // ppr29.php

$info = "Minsk | baseball | indians";

$user = explode("|", $info);

//$user[0] = "Minsk";$user[1] = "baseball";$user[2] = "Indians";

print_r($user);

$cities=array("Colum","Youngstown","Cleveland","Cincinnati");

$city_string = implode("l", $cities);

//$city_string = "Colum1Youngstown1Cleveland1Cincinnati";

echo "<br>",$city_string;

?>

Вывод:

Array ( [0] => Minsk [1] => baseball [2] => indians )

ColumlYoungstownlClevelandlCincinnati

Функция string strtok ($arg1, string $token) – выполняет лексемизацию строки, в результате которой строка arg1делится на слова (лексемы/tokens), где каждое слово отделено символом из $token. В примере строка "This is an example string" лексемизируeтся на отдельные слова с применением пробела как разделителя.

<? //ppr30.php

$string = "This is\tan example\nstring";

/* Использовать символы tab и newline как лексемизирующие символы */

$tok = strtok($string," \n\t");

while ($tok) {

echo "Word=$tok<br>";

$tok = strtok(" \n\t");

}

?>

Вывод:

Word = This

Word = is

Word = an

Word = example

Word = string

В параметр token можно поместить несколько лексем.

void parse_str (string $strike ) – разбирает strike так, как если бы она была строкой запроса, переданной через URL, и устанавливает переменные.

<? // ppr31.php Использование parse_str()

$strike = "first = value &second[] = this+works &second[] = another";

parse_str($strike);

echo $first; /* печатает "value" */

echo $second[0]; /* печатает "this works" */

echo $second[1]; /* печатает "another" */

?>

Вывод:

value this works another

getHostByName(domain_name) – преобразует переданное имя домена в IP адрес в формате nnn.nnn.nnn.nnn.

getHostByAddr(ip_address) – преобразует данный IP-адрес в формате nnn.nnn.nnn.nnn в полное имя домена.

Пример: определяем в какой стране живет посетитель:

<? //ppr32.php

$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);

$countrys = array( ru => Россия, ua => Украина, by => Беларусь );

$array = array_reverse(explode(".",$host));

if(!empty($countrys[$array[0]]))

echo "Ваша страна: ".$countrys[$array[0]];

else echo "Откуда Вы пришли – я не знаю :(";

$ip = gethostbyname('localhost');

echo "<br>",$ip;

?>

Вывод:

Откуда Вы пришли – я не знаю :(

127.0.0.1