Розділення рядків і цілих чисел у PHP
Працювати з рядками, числами та регулярними виразами в PHP відносно легко, враховуючи величезну кількість функцій, які надає мова.
Однак бувають випадки, коли з’ясувати, як розділити за певними критеріями, може бути не відразу зрозуміло, або може бути зрозуміло, що вам потрібно зробити, але не зрозуміло, як це зробити найкраще.
Фото Agê Barros на Unsplash
Наприклад, припустімо, що у вас є рядок, який містить як числа, так і цифри. Для цієї публікації припустимо, що даний рядок:
- включає години та хвилини,
- коли хвилини 60,
- рядок має збільшити значення годин на одиницю
- значення хвилин скидається на нуль.
Приклад проблемного рядка може мати форму T3H60M. Як тоді ми можемо розбити рядок на рядки та цілі числа та правильно його перебудувати?
У цьому випадку є три речі, які я вважаю корисними. Без особливого порядку:
- регулярний вираз
- preg_split
- фільтр_масиву
- значення_масиву
І порядок, у якому операції використання кожного з перерахованих вище виглядають приблизно так:
- використовувати регулярний вираз, щоб знайти всі цифри в рядку,
- видалити все, крім цифр у масиві
- якщо друга цифра 60, то встановіть її рівною нулю
- збільшити перший індекс масиву на одиницю
- перебудувати рядок.
Якби наведені вище дії були перетворені в код, це могло б виглядати так:
Зауважте, що я вирішив використати array_filter для видалення дублікатів значень і використовувати array_values для очищення масиву лише на два записи, перша з яких є годиною, а друга – хвилиною.
Після цього я визначаю значення кожного з індексів масиву (і пам’ятайте, що це рядки, тому вам доведеться привести їх до цілих чисел, щоб правильно збільшити їх значення.
Нарешті, я створюю рядок, як (і якщо) потрібно.
Звичайно, це трохи нішевий випадок, але рішення може бути більш узагальненим на основі ваших власних потреб.