Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PI_lektsii_2016.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

12.2 Функції strlen(), chr() і ord()

12.2.1 strlen().

Повертає довжину рядка, яку приймають в якості аргумента:

<?

$string = "Hello, world!!!";

$string_len = strlen($string);

echo ($string_len);

?>

12.2.2 chr ().

Ця функція приймає в якості аргументу ASCII код символу і повертає відповідний цьому коду фактичний символ:

<?

  $ Str = chr (36);

  echo ($ str); // Повертає символ "$"

?>

12.2.3 ord ().

Виконує дію, зворотню функції chr ():

<?

   $ Str = ord ('$');

   echo ($ str); // Повертає 36

?>

12.3 Trim-функції (функції видалення символів відступу) trim (), ltrim (), rtrim (), chop ()

Це дуже корисна група функцій, без яких складно обійтися при роботі з рядками. До символів відступу відносяться символи "\ n", "\ r", "\ t", "\ v", "\ 0" і відповідно відступ. Особливо часто ми з цими функціями будемо працювати при вивченні файлового введення-виведення.

12.3.1 trim ().

Ця функція приймає в якості свого єдиного аргументу рядок, і видаляє з неї відступи зліва і справа.

Приклад:

<?

   $ String = trim ( "Hello, world!");

?>

Давайте для того, щоб переконатися, що ця функція нас не обманює, виведемо її довжину до і після видалення з неї відступів. Напишемо ось такий простенький скриптик:

<?

   $ Str = "Hello, world!";

   $ Str1 = trim ( "Hello, world!");

   $ Str_len = strlen ($ str);

   $ Str1_len = strlen ($ str1);

   echo ( "розмір початкового рядка '$ str' = $ str_len, <br>

   розмір рядка після видалення пробілів = $ str1_len ");

?>

І ось результат, який доводить, що функція поводиться цілком пристойно:

  • Розмір початкового рядка 'Hello, world!' = 19,

  • розмір рядка поле видалення відступів = 13

12.3.2 ltrim (), rtrim () і chop ().

Функція ltrim () – видаляє з рядка початкові символи відступів (тобто, ті які зліва); rtrim () – кінцеві символи відступів. Функція chop () є синонімом функції rtrim ().

12.4 Функції форматного виведення. Специфікатори перетворення printf (), sprintf (), sscanf ().

12.4.1 printf () і sprintf ().

Синтаксис:

int printf (string format [, mixed args])

string sprintf (string format [, mixed args])

Ці дві функції призначені для форматного виведення і відрізняються вони тим, що функція printf () виробляє форматування і виводить результати у вихідний потік (браузер або консоль), а sprintf () після здійснення необхідного форматування просто повертає рядок.

З одного боку цими функціями можна користуватися просто як функції висновку:

<?

   printf ( "Hello!"); // Виводить "Hello!"

   sprintf ( "Hello!"); // Сама по собі нічого не виводить,

   $ Str = sprintf ( "Hello!"); // А просто повертає рядок,

   printf ($ str); // Яку потім можна вивести в вихідний потік

?>

Але використовувати їх тільки так, як ми зараз продемонстрували – просте марнотратство, так як ці функції здатні на більше. Справа в тому, що аргумент format цих функцій є рядком, що містить спеціальні символи, що використовуються при форматуванні даних, що містяться в списку аргументів.

Ці спецсимволи називаються специфікаторами перетворення, а символи, які залишаються незмінними при форматуванні рядка, називають директивами.

Специфікація визначається символом "%", за яким може слідувати до п'яти специфікаторів в наступному порядку:

Специфікатор заповнення. Встановлює символ, яким рядок заповнюється до заданого розміру. За замовчуванням використовується відступ. Специфікатор заповнення діє тільки при наявності специфікатора мінімальної ширини.

Специфікатор вирівнювання. За замовчуванням додаток рядка до мінімальної ширини проводиться з лівого краю (тобто, рядок вирівнюється по правому краю). Якщо доданий символ дефіса, то рядок вирівнюється по лівому краю.

Специфікатор мінімальної ширини. Являє собою ціле число, що задає мінімальний розмір форматованого рядка. Якщо переданий рядок менше, то вона доповнюється символами, зазначеними в специфікаторі заповнення.

Специфікатор точності. Призначений для вказівки кількості десяткових знаків в поданні чисел з плаваючою точкою. При застосуванні цього специфікатора для форматування рядків, він визначає максимальну кількість символів, які потрібно взяти з переданого рядка специфікатор типу. Цей специфікатор призначений для вказівки типу даних, які передані в якості аргументу.

Специфікатор може приймати одне з наступних значень:

  • b – ціле число, що представляється в двійковому вигляді;

  • з – ціле число, що представляється в вигляді символу з тим же ASCII кодом;

  • d – ціле число, відображене в десятковому вигляді;

  • f – число з плаваючою крапкою, що представляється у вигляді десяткового дробу;

  • – ціле число, відображене у вісімковому вигляді;

  • s – рядок;

  • x – ціле число, відображене в шістнадцятковому вигляді в нижньому регістрі;

  • X – ціле число, відображене в шістнадцятковому вигляді у верхньому регістрі.

Тепер, після розмови про специфікатори типу, виведемо з допомогою функції printf() рядок у форматі дати dd/mm/yyyy. Наступний код виводить в результаті рядок "02/03/2003":

<?

$day = 2;

$month = 3;

$year = 2003;

printf("%02d/%02d/%04d", $day, $month, $year);

?>

Результат:

02/03/2003

У цьому прикладі, місяць і день ми форматуємо як двозначні числа, а рік – чотиризначне. При цьому ми вказуємо, що цілі числа доповнюються до мінімальної довжини нулями зліва: %04d.

Перший символ – спеціфикатор заповнення і він дорівнює нулю. Так як додаток дописується до початку числа, специфікатор вирівнювання відсутній. Специфікатор мінімальної ширини дорівнює двум. Специфікатор точності також відсутня, так як ми форматуємо ціле число. Специфікатор типу представлений символом d, так як ми форматуємо число як десяткове ціле.

Наведемо ще один приклад:

<?

$value = 19;

printf("%.3f", $value);

?>

Цей скрипт виводить число 19 у вигляді 19.000.

12.4.2 sscanf ()

Синтаксис:

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

Ця функція є повною протилежністю функції printf (). Вона інтерпретує рядок str згідно формату format, аналогічно специфікації printf (). При вказівці тільки двох аргументів отримані значення повертаються як масив.

Давайте розглянемо такий приклад. Нехай у нас є рядок, в якому знаходиться інформація про назву та серійний номер виробу у вигляді "maxtor / 203-5505" і нам треба витягнути з неї серійний номер. Пишемо ось такий скрипт:

<?

   $ Product = "maxtor / 203-5505";

   $ Str = sscanf ($ product, "maxtor /% 3d-% 4d");

   echo ( "$ str [0] - $ str [1]");

?>

Результат:

 203-5505

Не забувайте, що якщо не вказуєте в функції необов'язкові аргументи, то на виході отримаєте масив, і тому при виведенні ми працюємо зі значеннями масиву.

Давайте попрацюємо ще з датою виготовлення цього виробу, яка нам стала в вигляді "august 10 2003", а нам треба щоб вона виводилася у вигляді "10 aug 2003". Працюємо:

<?

   $ Date = "august 10 2003";

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

   echo ( "Date: $ day -". substr ($ month, 0,3). "- $ year");

?>

Результат:

Date: 10-aug-2003

Зауваження: при вказівці необов'язкових параметрів їх треба передавати по посиланню (посилання позначається зазначенням символу "&" перед змінною).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]