Dividir strings e inteiros em PHP
Trabalhar com strings, números e expressões regulares em PHP é relativamente fácil, dado o grande número de funções que a linguagem oferece.
Há momentos, porém, em que descobrir como dividir em determinados critérios pode não ser imediatamente claro, ou pode ser claro o que você precisa fazer, mas não a melhor forma de fazê-lo.
Foto de Agê Barros no Unsplash
Por exemplo, digamos que você tenha uma string misturada com números e dígitos. Para este post, digamos que uma determinada string:
- inclui horas e minutos,
- quando os minutos estão em 60,
- a string deve aumentar o valor do das horas em um
- o valor dos minutos é zerado.
Um exemplo de string problemática, então, pode ser da forma T3H60M. Como então podemos dividir a string em strings e inteiros e reconstruí-la adequadamente?
Neste caso, há três coisas que considero úteis. Em nenhuma ordem particular:
- uma expressão regular
- preg_split
- array_filter
- valores_array
E a ordem em que as operações de uso de cada um dos itens acima são mais ou menos assim:
- use uma expressão regular para encontrar todos os dígitos na string,
- remova tudo, exceto os dígitos na matriz
- se o segundo dígito for 60, defina-o igual a zero
- aumentar o primeiro índice do array em um
- reconstruir a corda.
Se as etapas acima foram convertidas em código, pode ser assim:
Observe que opto por usar array_filter para remover valores duplicados e usar array_values para limpar a matriz em apenas duas entradas, sendo a primeira a hora e a segunda o minuto.
Depois disso, determino o valor de cada um dos índices do array (e lembre-se, eles são strings, então você terá que convertê-los como inteiros para aumentar adequadamente seu valor.
Finalmente, eu construo a string conforme (e se) necessário.
Claro, este é um caso um pouco de nicho, mas a solução pode ser mais generalizada com base em suas próprias necessidades.