Post on 08-Jul-2015
falecomigo@neto.eti.br
Faculdade Marista
2010.2
Aula - 02
O que veremos hoje?
1. Strings 2. Arrays3. Formulários
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.
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.
Exemplo do strlen
<?php
$tamanho = strlen(‘Brasil’);
echo ($tamanho. ‘<BR>’);
// Resultado: 6
echo (strlen(‘ ’).’<BR>’);
// Resultado: 0
?>
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>]);
Exemplo do strpos
<?php
echo(strpos(‘Brasil Pentacampeao’, ‘a’). ‘<BR>’);
//Resultado: 2
echo(strpos(‘Brasil Pentacampeao’, ‘a’, 3). ‘<BR>’);
//Resultado: 11
//exibindo todas ocorrências
$offset = 0;
while(($offset = strpos(‘Brasil Pentacampeao’, ‘a’, $offset + 1)) != 0){
echo($offset. ‘,’);
}
//Resultado: 2, 11, 13, 17
?>
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.
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:
?>
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.
Exemplo de str_replace
<?php
echo(str_replace(‘penta’,’hexa’, ‘Brasil penta’). ‘<BR>’);
// Resultado: Brasil hexa
echo(str_replace(‘USUARIO’,’Neto’, ‘Bem vindo USUARIO ao site!’). ‘<BR>’);
// Resultado: Bem vindo Neto ao site!
?>
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.
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
?>
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
?>
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!
Exemplo de crypt, sha1 e md5
<?PHP
$senhaCadastrada = 'minhaSenhaSeguraDeInternet';
echo(crypt($senhaCadastrada).'<BR>');
// Resultado: $1$eRl.t3cN$87toVnnbrp52Qo5N5LrH50
echo(sha1($senhaCadastrada).'<BR>');
// Resultado: bb8b564b31d1c4a736dbbca0fd3512a5246f3cd8
Exemplo de crypt, sha1 e md5echo(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!');
}
?>
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.
Exemplo de explode
<?PHP
$resultado = explode(' ', 'Brasil penta campeao');
echo $resultado[0].'<BR>'; // Resultado: Brasil
echo $resultado[1].'<BR>'; // Resultado: penta
$resultado = explode(' ', 'Brasil penta campeao', 2);
echo $resultado[0].'<BR>'; // Resultado: Brasil
echo $resultado[1].'<BR>'; // Resultado: penta campeao
?>
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.
Exemplo de implode
<?PHP
$meuArray = array('Alpha', 'Beta', 'Gama');
$minhaString = implode(' - ', $meuArray);
echo($minhaString);
// Resultado: Alpha - Beta - Gama
?>
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.
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_
?>
ARRAY
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.
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 )
?>
Arrays Multidimensionais
<?PHP
$arrayAlpha = array('a', 'b', 'c');
$arrayBeta = array('d', 'e', 'f');
$arrayMulti = array($arrayAlpha, $arrayBeta);
echo($arrayMulti[0][2].'<BR>'); // Resultado: c
echo($arrayMulti[1][2].'<BR>'); // Resultado: f
?>
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.
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 )
?>
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.
Exemplo do count e sizeof
<?PHP
$meuArray = array('a', 'b', 'c', 'd', 'e');
echo (count($meuArray).'<BR>'); // Resultado: 5
unset($meuArray[0]);
echo (sizeof($meuArray).'<BR>'); // Resultado: 4
?>
Navegação nos arrays
(mixed) current(<array>)
(mixed) key(<array>)
(mixed) prev(<array>)
(mixed) next(<array>)
(mixed) end(<array>)
(mixed) reset(<array>)
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
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
?>
array_push e array_pop
o array_push insere um valor no final de um arrray e o array_popremove 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.
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 )
?>
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.
Exemplo array_map
<?PHP
function calcularDobro($numero) {
return $numero * 2;
}
$meuArray = array(1, 2, 3);
$arrayAlterado = array_map('calcularDobro', $meuArray);
print_r($arrayAlterado);
// Resultado: Array ( [0] => 2 [1] => 4 [2] => 6 )
?>
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>);
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>);
Exemplo com array_key e array_key_exists
<?PHP
$meuArray = array('alfa' => 0, 1 => 1, 'dois' => 2);
print_r(array_keys($meuArray));
// Resultado: Array ( [0] => alfa [1] => 1 [2] => dois )
echo(array_key_exists('dois', $meuArray));
// Resultado: 1
?>
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.
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.
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>);
Exemplo misturar e ordenar arrays
<?PHP
$meuArray = array('a', 1, 'b', 'c', 2, '0', '4');
sort($meuArray);
print_r($meuArray);
// Resultado:
// Array ( [0] => 0 [1] => 4 [2] => a [3] => b [4] => c [5] => 1 [6] => 2 )
echo('<BR>');
rsort($meuArray);
print_r($meuArray);
// Resultado:
// Array ( [0] => 2 [1] => 1 [2] => c [3] => b [4] => a [5] => 4 [6] => 0 )
echo('<BR>');
shuffle($meuArray);
print_r($meuArray);
// Resultado:
// Array ( [0] => c [1] => 0 [2] => 4 [3] => a [4] => 1 [5] => 2 [6] => b )
?>
Formulários
$_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.
VamosPRATICAR?
Fomulário
<HTML>
<HEAD>
<TITLE>EXEMPLO - Formul·rios</TITLE>
</HEAD>
<BODY>
<FORM method="POST" action="?action=save" name="meuForm">
Nome: <INPUT type=TEXT name=CAMPO_NOME>
<BR>Idade: <INPUT type=TEXT name=CAMPO_IDADE>
<BR>E-mail: <INPUT type=TEXT name=CAMPO_EMAIL>
<BR>Sexo: <INPUT type=RADIO name=CAMPO_SEXO value="M">Masculino
<INPUT type=RADIO name=CAMPO_SEXO value="F">Feminino
<BR>Curso: <SELECT name=CAMPO_CURSO>
<OPTION selected>Selecione...</OPTION>
<OPTION>CiÍncia da ComputaÁ„o</OPTION>
<OPTION>Bacharelado em Inform·tica</OPTION>
<OPTION>Engenharia da ComputaÁ„o</OPTION>
</SELECT>
<BR>Conhecimentos:
<INPUT type=CHECKBOX name=CAMPO_CONHECIMENTOS[] value="Word">Microsoft Word
<INPUT type=CHECKBOX name=CAMPO_CONHECIMENTOS[] value="HTML">HTML
<INPUT type=CHECKBOX name=CAMPO_CONHECIMENTOS[] value="JS">JavaScript
<INPUT type=CHECKBOX name=CAMPO_CONHECIMENTOS[] value="PHP">PHP
<BR>
<INPUT type=RESET value="Limpar">
<INPUT type=SUBMIT value="Enviar">
</FORM>
</BODY>
</HTML>
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;
}
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;
}
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;
}
Validação de radio
$sexo = $_POST["CAMPO_SEXO"];
if($sexo != "M" && $sexo != "F")
{
echo("O campo 'Sexo' deve ser preenchido.");
$formValid = FALSE;
}
Validação lista de seleção
$curso = $_POST["CAMPO_CURSO"];
if($curso == "" || $curso == "Selecione...")
{
echo("O campo 'Curso' deve ser preenchido.");
$formValid = FALSE;
}
Cabousse…