E ai escoteiro, o que está achando de tudo que viu até agora? Deixe sua opinião ai nos comentários para eu saber o que eu preciso melhorar.
Em nosso post anterior nós tivemos a oportunidade de conhecer as funções que em minha opinião é o assunto mais importante da programação, pois é a base de vários outros. Agora que você já tem conhecimento sobre o tema, vamos conhecer algumas funções nativas do PHP muito úteis para manipulação de strings. Tenho certeza que você vai adorar.
Na documentação do PHP você pode conhecer todas as Funções de String do PHP, mas vou apresentar aqui as que eu acho mais interessantes e como elas funcionam.
str_replace
Imagine que você tem a seguinte frase: "Chiquinho é um menino nota 10. Dê os meus parabéns a Chiquinho!", porém você não pode ser tão informal, e precisa reescrever a frase substituindo Chiquinho por Francisco. A função str_replace faz isso e é bem simples.
<?php
$frase = "Chiquinho é um menino nota 10. Dê os meus parabéns a Chiquinho!";
$procurarPor = "Chiquinho";
$substituirPor = "Francisco";
echo str_replace($procurarPor, $substituirPor, $frase);
O resultado será
Francisco é um menino nota 10. Dê os meus parabéns a Francisco!
stripos
Imagine que você tem a seguinte frase: "Os melhores alunos da escola esse ano foram: José, Maria, Débora, Bianca, Cláudio e Cleiton.", e você precisa se certificar se a "Maria" está contida nessa frase.
<?php
$frase = "Os melhores alunos da escola esse ano foram: José, Maria, Débora, Bianca, Cláudio e Cleiton.";
$procurarPor = "Maria";
if (stripos($frase, $procurarPor)) {
echo "Parabéns Maria!";
} else {
echo "Você não se saiu muito bem, Maria!";
}
A função stripos encontra a posição daquela string que você está procurando, dentro de outra string. Se ela encontra ela retornará um inteiro informando a posição
Exemplo:
<?php
$frase = "Acampamento Dev é legal!";
// Retornará 1, porque a primeira posição é 0 e c é o segundo caractere
var_dump(stripos($frase, "c"));
// Retornará false, porque não encontrou z na string.
var_dump(stripos($frase, "z"));
Ué, mas se ele retorna um inteiro, como conseguimos usar essa função em um IF, se a gente aprendeu que no IF temos que passar Booleano?
O PHP tem um jeito "mágico" de tratar os tipos em situações específicas. Se eu estou numa situação que preciso avaliar uma expressão Booleana, o PHP usará a seguinte regra:
- 0 é considerado false
- "" (string vazia) é considerado false
- "0" (string contendo um número 0) é considerado false
- [] (Array vazio) é considerado false
- [0] (Array contendo apenas o número 0) é considerado true
- [""] (Array contendo apenas uma string vazia) é considerado true
- "Acampamento Dev" (String preenchida) é considerado true
- 1 (Um número diferente de zero) é considerado true
- -1 (Um número negativo) é considerado true
str_contains
Ela funciona muito parecida com a stripos, porém ela não procura a posição ela apenas analisa se a substring existe ou não, e sempre retornará um Booleano.
Essa função é nova e foi inserida no PHP 8, ou seja, se quando você estiver lendo esse Post o seu ambiente não estiver rodando o PHP 8 e você tentar executar essa função encontrará um erro.
strtoupper
Essa função também é muito utilizada e é muito útil, ela recebe uma string e devolve a versão em letras maiúsculas dessa mesma string.
<?php
$frase = "Acampamento Dev é legal!";
echo strtoupper($frase);
O resultado será
ACAMPAMENTO DEV é LEGAL!
Ué, porque será que o "é" ficou minúsculo?
Sempre que estivermos trabalhando com acentuação devemos utilizar as versão com o prefixo mb_ das funções. Lembra?
<?php
$frase = "Acampamento Dev é legal!";
echo mb_strtoupper($frase);
O resultado será
ACAMPAMENTO DEV É LEGAL!
strtolower
Essa função também é muito utilizada e é muito útil, ela recebe uma string e devolve a versão em letras maiúsculas dessa mesma string.
<?php
$frase = "ACAMPAMENTO DEV É LEGAL!";
echo strtolower($frase);
O resultado será
acampamento dev É legal!
Nesse caso seria melhor utilizar a variação dessa função que usar o prefixo mb_.
<?php
$frase = "ACAMPAMENTO DEV É LEGAL!";
echo mb_strtolower($frase);
O resultado será
acampamento dev é legal!
ucfirst
Essa função recebe uma string como parâmetro e devolve a mesma string com a inicial em maiúscula.
<?php
$frase = "acampamento dev";
echo ucfirst($frase);
O resultado será
Acampamento dev
explode
Como o próprio nome sugere, ela "explode" uma string em vário pequenos pedaço, onde cada pequeno pedaço é uma parte dessa string principal, e todos esses pequenos pedaços são devolvidos como itens de um Array.
Pareceu confuso? Veja esse exemplo que ficará claro
<?php
$pessoas = "Ivan, Sérgio, Jéssica, Beatriz, Lara";
$listaDePessoas = explode(", ", $pessoas);
print_r($listaDePessoas);
O resultado será
Array
(
[0] => Ivan
[1] => Sérgio
[2] => Jéssica
[3] => Beatriz
[4] => Lara
)
Como primeiro parâmetro passamos o delimitador, ou seja, a parte da string que separam as palavras (Que nesse caso foi uma virgula seguida de um espaço em branco), e como segundo parâmetro passamos a string que será "explodida".
Implode
Essa função faz exatamente o contrário da função "explode", ou seja, ela pega um Array e converte em uma string onde cada item será separado pelo delimitador informado.
Veja o exemplo:
<?php
$listaDeAprovados = ["Carlos", "Vanessa", "Aline"];
$aprovados = implode(", ", $listaDeAprovados);
echo "Os aprovados foram: $aprovados";
O resultado será
Os aprovados foram: Carlos, Vanessa, Aline
trim
Muitas vezes recebemos dados do usuário, como vimos quando utilizamos a função readline, porém não temos controle do que o usuário vai digitar. Ele pode digitar o nome dele como "Paulo", " Paulo" (com um espaço em branco na frente), "Paulo " (com um espaço em branco no final, etc.
A função trim serve justamente para remover espaços em branco no início e no final de uma string.
Exemplo:
<?php
$nome1 = " Paulo";
if ($nome1 == "Paulo") {
echo "Essa linha nunca será impressa!";
}
$nome2 = trim(" Paulo");
if ($nome2 == "Paulo") {
echo "Essa linha será impressa!";
}
Existem também as variantes ltrim que remove espaços em branco apenas no inicio da string e rtrim que remove espaços em branco apenas no final da string.
L e R nesse caso é abreviação de Left (esquerda) e Right (direita)
number_format
Essa função também é muito útil e serve para formatamos a exibição de números no PHP.
Como vimos, os números decimais são separados por "." e não por "," como fazemos aqui no Brasil. Com essa função podemos resolver isso. Veja esse exemplo:
<?php
$salario = 12000;
$bonus = 986.50;
$total = $salario + $bonus;
echo "R$ " . number_format($total, 2, ",", ".");
O resultado será
R$ 12.986,50
- O primeiro parâmetro é o número que querendo formatar
- O segundo parâmetro é a quantidade de casas decimais que queremos exibir
- O terceiro parâmetro é a string que queremos utilizar como separador das casas decimais
- O quarto parâmetro é a string que queremos utilizar como separador do milhar
Existem várias outras funções interessantes para manipulação de Strings no PHP, então vale muito a pena dar uma olhada na documentação, mas para esse Post não ficar muito extenso vão parar por aqui.
E ai, curtiu? Então vamos de desafio.
Desafio
Utilize o código abaixo e implemente a função para que receba como parâmetro um $funcionario (Array associativo contendo nome e salário) e um $percentualDeAumento.
A função deve calcular o novo salário com base no percentual informado e retornar a frase com o CORINGAS substituidos.
<?php
function avisarFuncionarioSobreAumento($funcionario, $percentualDeAumento) {
$frase = "Parabéns #NOME_FUNCIONARIO#, seu salário passou de #SALARIO_ANTIGO para #NOVO_SALARIO#!";
}
$funcionario = [
"nome" => "José Felipe da Silva",
"salario" => 7850
];
$percentualDeAumento = 12;
echo avisarFuncionarioSobreAumento($funcionario, $percentualDeAumento);
A saída ao executar o programa deve ser:
Parabéns José Felipe da Silva, seu salário passou de R$ 7.850,00 para R$ 8.792,00!
Essa é um pouquinho mais difícil mas você consegue, tenho certeza disso!!!
Até a próxima, escoteiro!!!