O documento discute funções do PHP relacionadas a strings e arrays. Na seção de strings, explica funções como strlen, strpos, str_replace, trim e outras. Na seção de arrays, explica como imprimir, adicionar, remover e ordenar elementos de arrays, e funções como count, array_map e array_search.
2. O que veremos hoje?
1. Strings
2. Arrays
3. Formulários
3. String
Em diversas situações precisaremos tratar uma String seja:
Dividindo;
Realizando parsers;
Substituindo valores;
Criptografando;
Formatando;
Etc..
O PHP fornece dezenas de funções relacionadas a String, é importante
conhecê-las para tornar mais práticos e simples os códigos-fontes do
seu projeto.
4. Obtendo o tamanho de uma String
O comando strlen permite ao desenvolvedor descobrir qual o
tamanho de uma string passada por parâmetro.
(int) strlen(<string>);
Retorno: o tamanho da string, caso seja vazia
retornará 0.
Obs. Dentre os vários usos podemos citar a validação se o tamanho da
string está de acordo com os parâmetros de armazenamentos definidos
em suas tabelas no MySQL.
6. Localizar uma substring dentro de
uma string(strpos,strchr e strrchr)
O comando strpos retorna a posição numérica da primeira
ocorrência da substring que está sendo procurada na string principal, ou
zero em caso de não haver resultados para a busca realizada.
(int) strpos(<string>,<busca>[,<posicao_de_inicio_de busca>]);
8. strchr e strrch
Os comandos strchr e strrchr localizam a primeira e a última
ocorrência da busca respectivamente.
(string) strch(<string>,<busca>);
(string) strrch(<string>,<busca>);
Retorno: a substring formada pela posição de localização da busca
até o final da string principal. Caso não haja resultados, será
retornado FALSE.
9. Exemplo de strchr e strrch
<?php
echo(strchr(‘Brasil Pentacampeao’, ‘a’). ‘<BR>’);
//Resultado: asil Pentacapeao
echo(strrchr(‘Brasil Pentacampeao’, ‘a’). ‘<BR>’);
//Resultado: ao
echo(strrchr(‘Brasil Pentacampeao’, ‘y’). ‘<BR>’);
//Resultado:
?>
10. Substituição de substring com
str_replace
O comando str_replace substitui todas as ocorrências de uma
busca em string pelo valor informado.
(mixed) str_replace(<busca>,<substituicao>,<string_original>);
Retorno: a nova string com suas alterações.
12. Caixa alta e baixa com stroupper,
strolower e ucfirt
A formatação de strings para caixa alta e caixa baixa pode ser realizada
por meio dos comandos stroupper e strolower,
respectivamente. Existe também o ucfirst que torna maiúscula a
primeira letra da string.
(string) stroupper(<string>);
(string) strlower(<string>);
(string) ucfirst(<string>);
Retorno: a nova string com suas alterações.
13. Exemplo de stroupper, strolower e
ucfirst
<?php
echo(strlower(‘jose NETO’). ‘<BR>’);
//Resultado: jose neto
echo(stroupper(‘jose NETO’).’<BR>’);
//Resultado: JOSE NETO
echo(ucfirst(‘andre MILANI’).’<BR>’);
//Resultado: Andre MILANI
?>
14. Inverter string com strrev
A função strrev, inverte a string passada como parâmetro.
(string) strrev(<string>);
Retorno: a nova string com suas invertida.
Exemplo de strrev
<?php
echo(strrev(‘Brasil’));
Resultado: lisarB
?>
15. Criptografia de string com crypt,
sha1 e md5
As funções crypt, sha1 e md5, são utilizadas para gerar os
códigos hash das string passadas por parâmetro.
Este recurso tem diversas aplicações, entre elas o armazenamento de
senha em tabelas do banco de dados.
O código hash é gerado a partir de algoritmos conhecidos como one-way(única
direção), pois seus resultados não são reversíveis a ponto de se chegar a string
original.”
(string) crypt(<string>);
(string) sha1(<string>);
(string) md5(<string>);
Retorno: código hash gerado a partir da string informada.
ATENÇÃO MUITO USADO!
16. Exemplo de crypt, sha1 e md5
<?PHP
$senhaCadastrada = 'minhaSenhaSeguraDeInternet';
echo(crypt($senhaCadastrada).'<BR>');
// Resultado: $1$eRl.t3cN$87toVnnbrp52Qo5N5LrH50
echo(sha1($senhaCadastrada).'<BR>');
// Resultado: bb8b564b31d1c4a736dbbca0fd3512a5246f3cd8
17. Exemplo de crypt, sha1 e md5
echo(md5($senhaCadastrada).'<BR>');
// Resultado: 852b340fd8be477f0418cdcf32450fa7
// Valor que deve ser armazenado no banco de dados
$valorArmazenadoNoBanco = crypt($senhaCadastrada);
// Autenticando um usuario
$senhaInformadaNoLogin = 'minhaSenhaSeguraDeInternet';
if(crypt($senhaInformadaNoLogin) == $valorArmazenadoNoBanco)
{
echo('Sucesso!');
}
?>
18. Transformar string em arrays com
explode e implode
O explode, separa a string com base em um caractere divisor, que pode
ser qualquer caracter.
(array) explode(<divisor>,<string>[, numero_de_divisoes_maximo]);
Retorno: array com cada parte da string em uma posição.
20. Transformar string em arrays com
explode e implode
O implode, monta uma string com base nas posições existentes em um
array. Para organizar a string, é possível indicar qual o caractere de separação
entra as partes deve ser utilizado na string final
(array) implode(<divisor>,<string>);
Retorno: string com as partes do array.
22. Remover espaços em branco com
trim, ltrim e rtrim
Os comandos trim, ltrim e rtrim removem o excesso de espaços em
branco em diferentes partes da string passada por parâmetro.
(string) trim(<string>);
(string) ltrim(<string>);
(string) rtrim(<string>);
Retorno: string alterada.
23. Exemplo de trim, ltrim e rtim
<?PHP
echo(trim(' Brasil penta campeao ').'<BR>');
// Resultado: _Brasil penta campeao_
echo(ltrim(' Brasil penta campeao ').'<BR>');
// Resultado: _Brasil penta campeao _
echo(rtrim(' Brasil penta campeao ').'<BR>');
// Resultado: _ Brasil penta campeao_
?>
25. Imprimindo um array
O comando print_r é utilizado para exibir todo o conteúdo do array
passado como parâmetro a essa função.
O formato da impressão do array pelo comando print_r é de exibir sempre a
chave e o valor correspondente de cada elemento do array.
(mixed) print_r(<array>);
Retorno: imprime no html as chaves e valores contidos no array.
26. Exemplo imprimindo um array
<?PHP
$meuArray = array('alpha' => 'valor1', 2, 'tres');
$meuArray[5] = 'Novo valor';
print_r($meuArray);
// Resultado:
// Array ( [alpha] => valor1 [0] => 2 [1] => tres [5] => Novo valor )
?>
28. Removendo elementos do array
O comando unset destrói a posição do array em questão ou variável
informada.
(void) unset(<variavel_ou_posicao_do_array>);
Retorno: void.
29. Exemplo do unset
<?PHP
$meuArray = array('a', 'b', 'c', 'd', 'e');
unset($meuArray[3]);
print_r($meuArray);
// Resultado:
// Array ( [0] => a [1] => b [2] => c [4] => e )
?>
30. Obtendo número de elementos do
array
É possível obter o número de elementos existentes em um array por meio das
funções count e sizeof.
(int) count(<variavel>);
(int) sizeof(<variavel>);
Retorno: número de elementos da variável ou array.
33. Retorno Descrição
current Retorna o elemento da posição atual do array.
key Retorna a chave da posição atual do array.
next Avança o índice do array para a próxima posição e retorna
o valor do elemento na posição em questão.
prev Retrocede o índice do array para a posição anterior e
retorna o valor do elemento na posição em questão.
end Avança o índice do array para a última posição e retorna o
valor do elemento na posição em questão.
reset Retrocede o índice do array para a primeira posição e
retorna o valor do elemento na posicão em questão
34. Exemplo navegação em arrays
<?PHP
$meuArray = array('a', 'b', 'c', 'd', 'e', 'f', 'g');
foreach($meuArray as $valor) {
echo($valor." ");
}
// Resultado: a b c d e f g
end($meuArray);
prev($meuArray);
prev($meuArray);
prev($meuArray);
next($meuArray);
echo(key($meuArray)); // Resultado: 4
echo(current($meuArray)); // Resultado: e
?>
35. array_push e array_pop
o array_push insere um valor no final de um arrray e o array_pop
remove o último elemento de um array.
(int) array_push(<array>,<elemento>);
(mixed) array_pop(<variavel>);
Retorno Descrição
array_push Retorna o novo número de elementos do array.
array_pop Retornao último elemento do array, eliminando-o do array.
36. Exemplo array_push e array_pop
<?PHP
$minhaPilha = array();
array_push($minhaPilha, 'a');
array_push($minhaPilha, 'b');
echo(array_push($minhaPilha, 'c').'<BR>'); // Resultado: 3
echo(array_pop($minhaPilha).'<BR>'); // Resultado: c
print_r($minhaPilha); // Resultado: Array ( [0] => a [1] => b )
?>
37. Enviar todos os elementos de um
array para uma função com array_map
Em determinados momentos pode ser necessário que todos os elementos de
um array sejam enviados para uma função específica.
A função array_map recebe um array como parâmetro e uma função e
automatiza o envio de todos os elementos do array para tal instrução.
(array) array_map(<nome_da_funcao>,<array>);
Retorno: um novo array com os retornos da função para cada posição do
array enviado como parâmetro.
39. Achar uma chave com array_key e
array_key_exists
O comando array_keys retorna um novo array, em que cada posição é
uma chave disponível no array mencionado no comando.
Pode ser útil em situações nas quais não sabemos quais os elementos e quais
chaves existem em um array.
(array) array_keys(<array>);
40. Achar uma chave com array_key e
array_key_exists
Caso o você tenha uma determinada chave e precise descobrir se um array
em particular contém um registro atribuído a essa chave, é possivel utilizar a
função array_key_exists
(bool) array_key_exists(<chave>,<array>);
42. Localizar valores em arrays com
array_search e in_array
Para saber se um determinado valor está contido em um array utilie o
array_search
(mixed) array_search(<elemento>,<array>);
Retorno: retorna a chave referente ao valor procurado, no caso de
encontrá-lo se não retorna FALSE.
43. Exemplo array_search e in_array
<?PHP
$meuArray = array('aaa', 'bb', 'Chave do c' => 'c', 'ddd');
echo(array_search('aaa', $meuArray).'<BR>'); // Resultado: 0
echo(array_search('c', $meuArray).'<BR>'); // Resultado: Chave do c
echo(array_search('nenhum', $meuArray).'<BR>'); // Resultado: <vazio>
?>
Obs. Similar a função array_search, o comando in_array retorna TRUE
caso encontre e FALSE caso não.
44. Misturar e ordenar arrays
É possível ordenar arrays por ordem crescente(sort) e decrescente (rsort),
bem como podemos embaralhá-lo(shuffle).
(bool) sort(<array>);
(bool) rsort(<array>);
(bool) shuffle(<array>);
47. $_POST e $_GET
As supervariáves $_POST e $_GET são arrays que representam os dados
enviados ao servidor pelo método post e get. Estas variáveis estão diponíveis
em todas as partes em que forem requisitadas.
$_REQUEST
A supervariável $REQUEST reúne o conteúdo das supervariáveis $_POST,
$_GET e $COOKIES. A vantagem é que, independete do método de envio dos
dados de um formulário, é possível acessar o campo por seu nome.
50. Validação de texto
$tamanho_nome = strlen($_POST["CAMPO_NOME"]);
if($tamanho_nome < 5 || $tamanho_nome > 64)
{
echo("O campo 'Nome' deve ter entre 5 e 64
caracteres.".$tamanho_nome);
$formValid = FALSE;
}
51. Validação número
$idade = (int)$_POST["CAMPO_IDADE"];
if(is_NaN($idade) || $idade < 4 || $idade > 120)
{
echo("O campo 'Idade' deve ter preenchido corretamente.");
$formValid = FALSE;
}
52. Validação email
$email = $_POST["CAMPO_EMAIL"];
$regex = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-
9_]+)*[.][A-z]{2,4}$/";
if(!preg_match($regex, $email))
{
echo("O campo 'E-mail' deve ter preenchido corretamente.");
$formValid = FALSE;
}
53. Validação de radio
$sexo = $_POST["CAMPO_SEXO"];
if($sexo != "M" && $sexo != "F")
{
echo("O campo 'Sexo' deve ser preenchido.");
$formValid = FALSE;
}
54. Validação lista de seleção
$curso = $_POST["CAMPO_CURSO"];
if($curso == "" || $curso == "Selecione...")
{
echo("O campo 'Curso' deve ser preenchido.");
$formValid = FALSE;
}