Разделение строк и целых чисел в PHP
Работа со строками, числами и регулярными выражениями в PHP относительно проста, учитывая огромное количество функций, предоставляемых языком.
Однако бывают случаи, когда выяснить, как разделить по определенным критериям, может быть не сразу ясно, или может быть ясно, что вам нужно сделать, но не то, как это сделать лучше всего.
Фото Аге Барроса на Unsplash
Например, предположим, что у вас есть строка, смешанная как с числами, так и с цифрами. Для этого поста предположим, что заданная строка:
- включает часы и минуты,
- когда минуты на 60,
- строка должна увеличить значение часов на единицу
- значение минут обнуляется.
Таким образом, проблемная строка может иметь форму T3H60M. Как же тогда мы могли бы разделить строку на строки и целые числа и правильно перестроить ее?
В этом случае есть три вещи, которые я нашел полезными. В произвольном порядке:
- регулярное выражение
- preg_split
- фильтр_массива
- массив_значений
И порядок, в котором операции использования каждого из вышеперечисленных, примерно такой:
- используйте регулярное выражение, чтобы найти все цифры в строке,
- удалить все, кроме цифр в массиве
- если вторая цифра 60, то установить ее равной нулю
- увеличить первый индекс массива на единицу
- восстановить строку.
Если бы приведенные выше шаги были преобразованы в код, это могло бы выглядеть так:
Обратите внимание, что я решил использовать array_filter для удаления повторяющихся значений и использовать array_values для очистки массива всего до двух записей, первая из которых — это час, вторая — минута.
После этого я определяю значение каждого из индексов массива (и помните, что это строки, поэтому вам придется преобразовать их в целые числа, чтобы правильно увеличить их значение.
Наконец, я создаю строку по мере необходимости (и если это необходимо).
Конечно, это немного нишевый случай, но решение может быть более обобщенным в зависимости от ваших собственных потребностей.