✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Разделение строк и целых чисел в PHP

19

Работа со строками, числами и регулярными выражениями в PHP относительно проста, учитывая огромное количество функций, предоставляемых языком.

Однако бывают случаи, когда выяснить, как разделить по определенным критериям, может быть не сразу ясно, или может быть ясно, что вам нужно сделать, но не то, как это сделать лучше всего.

Фото Аге Барроса на Unsplash

Например, предположим, что у вас есть строка, смешанная как с числами, так и с цифрами. Для этого поста предположим, что заданная строка:

  • включает часы и минуты,
  • когда минуты на 60,
  • строка должна увеличить значение часов на единицу
  • значение минут обнуляется.

Таким образом, проблемная строка может иметь форму T3H60M. Как же тогда мы могли бы разделить строку на строки и целые числа и правильно перестроить ее?

В этом случае есть три вещи, которые я нашел полезными. В произвольном порядке:

И порядок, в котором операции использования каждого из вышеперечисленных, примерно такой:

  1. используйте регулярное выражение, чтобы найти все цифры в строке,
  2. удалить все, кроме цифр в массиве
  3. если вторая цифра 60, то установить ее равной нулю
  4. увеличить первый индекс массива на единицу
  5. восстановить строку.

Если бы приведенные выше шаги были преобразованы в код, это могло бы выглядеть так:

Обратите внимание, что я решил использовать array_filter для удаления повторяющихся значений и использовать array_values ​​для очистки массива всего до двух записей, первая из которых — это час, вторая — минута.

После этого я определяю значение каждого из индексов массива (и помните, что это строки, поэтому вам придется преобразовать их в целые числа, чтобы правильно увеличить их значение.

Наконец, я создаю строку по мере необходимости (и если это необходимо).

Конечно, это немного нишевый случай, но решение может быть более обобщенным в зависимости от ваших собственных потребностей.

Источник записи: tommcfarlin.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее