PHP sprintf: форматування та обробка рядків
Опубликованно 21.01.2018 04:08
Функція PHP sprintf дозволяє перетворити і розмістити певну кількість аргументів в одному рядку символів. Специфікатори форматування дозволяють працювати з символами, рядками, цілими і дробовими числами.
Застосування функції затребуване для оформлення табличної інформації і створення шаблонів. Може бути використане для попередньої формалізації вихідних даних у певній структурі, зміни їх змісту або послідовності. Синтаксис функції PHP sprintf()
Результат функції – рядок символів, сформована в певній послідовності з конкретних даних, параметри функції: рядок форматування; список аргументів.
Для форматування можна використовувати будь-яку конструкцію і логіку, включаючи теги HTML. Хоча немає ніяких обмежень на застосування sprintf, керівництво по PHP визначає специфікатори перетворення більшою мірою до числової інформації.
Елемент формату починається з символу % та закінчується символом специфікатора. Велика частина можливостей форматування лежить в області числової інформації. Дуже практична можливість перетворити число в двійковій і шістнадцятковий формати. Тут функції sprintf на PHP навряд чи варто писати заміну.
У наведеному прикладі особливо виділено правило іменування аргументів і відмінності специфікатора x від X. Правильне використання посилань на послідовність аргументів, які форматуються, має значення для правильного результату. Нумерація завжди починається з 1.
Послідовність використання посилань не має значення, але важливо пам'ятати: PHP функція sprintf всі елементи % (без зазначення номера аргументу) розглядає послідовно в загальному списку. До нумерації загального списку ніякого відношення не має ні кількість, ні послідовність елементів %, вказаних з конкретними номерами параметрів. Опис прикладу застосування sprintf в PHP
Якщо управляти аргументом у вигляді рядка немає прямої можливості, то управляти рядком формату і висновком в рядок результату цифрової інформації не становить проблеми.
У перших двох рядках прикладу (висновок аргументів Arg1, Arg2c і Arg2p) перший аргумент – рядок (найменування позиції) виводиться як є. Третій аргумент займає у виведенні 12 (14) символів. Перший рядок вирівнює число зліва нулями до загальної довжини 12 символів. Після точки чотири символи. Друга рядок вирівнює число праворуч (дробову частину) до 14 символів. Ознакою, що потрібно виконувати вирівнювання праворуч, служить символ.
Рядок форматування – це звичайна рядок символів. У неї можна вставляти обчислювані вирази. В даному випадку для виділення іншого числа використані вставки {$cL} і {$cR}. Це зробило рядок форматування наочніше і спростило її запис по всіх прикладів. Формування рядка форматування
Робота PHP російською, або функція sprintf, – робота інтерпретатора в природному і зручному середовищі. Власне, HTML-сторінка з вставками PHP-коду являє собою будь-який контекст на будь-якій мові. Це не та свобода, яку дає JavaScript в середовищі браузера.
Щоб вивести російський контент на PHP, не потрібно кодувати кирилицю, але іноді доводиться використовувати функцію перетворення iconv(). У будь-якому випадку все доступно і читабельно.
Текст вставки PHP-коду в HTML-сторінку зрозумілий і затребуваний. Застосування в рядку символів:
Значення змінної ABC={$ABC} одиниць
Вставка {$ABC} має значення тільки один раз і виконується теж тільки один раз. Особливість виконання PHP-коду на сторінці
Інтерпретатор тільки один раз переглядає сторінку і тільки один раз замінює вставки {$ABC} їх значеннями. Програміст може, на свій розсуд, застосовувати фразу "тільки один раз", змушуючи PHP багаторазово наближатися до потрібного результату.
У будь-якому випадку, як тільки HTML-сторінка відправлена в браузер, в ній немає ніякого PHP-коду.
Якщо елемент сторінки браузера ініціював контакт з сервером, він може запустити новий PHP-скрипт. Тут вставки {$ABC} вельми відносні, і немає ніякої гарантії правильного результату. Але застосування в PHP sprintf – це динаміка такої можливості.
Розробник може не тільки отримати бажане виконання такої вставки, але і змінити рядок, в яку вона буде передавати потрібне значення. Момент формування контенту
Використання потенціалу PHP як засобу формування вставок в HTML-сторінку, як інструменту формування сторінки цілком природно. З цього починається сайт. Як тільки сторінка сформована, а фактично на сайт прийшов відвідувач, то за сучасними уявленнями: сторінку міняти не можна; користувача упускати теж не можна.
Фактично відвідувач прийшов на сайт і отримав відповідь у вигляді HTML-коду. Абсолютно неправильно змінювати цей відповідь – це означає сказати відвідувачеві, що сторінка його змінює. Але реагувати на дії відвідувача адекватно і за його ініціативою сторінка зобов'язана.
Прихід відвідувача – перший відповідь. Дія відвідувача – адекватна реакція сторінки та її підготовка до всіх передбачуваним наступним діям відвідувача.
Значна частка відповідальності за динаміку сторінки з ініціативи відвідувача лягає на JavaScript, але він функціонує тільки в браузері, а на сервер може відправляти тільки AJAX-запитів. Кожне звернення до сервера може запускати PHP-скрипт. Але момент формування сторінки і момент реакції на запит істотно розрізняються.
Функція PHP sprintf – ідеальний засіб для динамічного формування шаблону відповіді і заповнення його потрібним значенням. Зміна PHP-коду в ході виконання
Ідея динаміки коду народилася разом з першою мовою програмування і сьогодні присутня в кожному сучасному мові програмування.
Виконання коду за допомогою eval (рядок коду) сьогодні вважається проломом в безпеці, але вона настільки ж затребувана, наскільки і небезпечною.
Щоб змінити код в процесі виконання, сьогодні не обов'язково користуватися функцією eval(). Це скоріше швидкий сніданок, виконання однієї-двох команд, ніж практичний фундамент для побудови потрібної динаміки.
Функція PHP sprintf() дозволяє проектувати шаблон скрипта, наприклад коду об'єкта, який буде викликаний при тому чи іншому дії відвідувача. Сформована практика записувати тіла об'єктів у вигляді незалежних файлів – ідеальне рішення для їх зміни в процесі роботи сайту.
Використання інструментів роботи з рядками PHP, доповнюють функціональність sprintf() дозволяє не тільки змінювати використовувані об'єкти в результаті дій конкретного відвідувача, але і переносити цю динаміку на роботу з іншими відвідувачами: це розвиток сайту, динаміка його функціональності, накопичення досвіду і знань.
Категория: Техника