Informática Numaboa
PHP rapidinho
Qui 20 Abr 2006 15:35 |
- Detalhes
- Categoria: PHP
- Atualização: Sexta, 26 Junho 2009 20:36
- Autor: vovó Vicki
- Acessos: 51774
Manipulação de strings
Uma das tarefas mais chatas para programadores é lidar com dados e a linguagem utilizada não possuir meios adequados para fazê-lo. Geralmente, a manipulação de strings é a pior delas. Mas não no PHP. O pessoal responsável pela linguagem montou um verdadeiro arsenal que facilita a nossa vida. Só temos que agradecer.
O operador ponto
A primeira coisa que você precisa saber sobre strings no contexto PHP é a existência do operador ponto. O operador ponto é usado para concatenar (ou fundir) strings. Veja um exemplo:
A saída efetuada pela função echo() é "Este é um exemplo de concatenação de strings". O operador ponto, colocado entre a variável $variavelTexto e a string literal, tem como resultado a união das duas strings.
É claro que poderíamos ter fornecido o parâmetro da função echo() como "$variavelTexto concatenação de strings", ou seja, colocando a variável dentro das aspas duplas. O resultado seria o mesmo porém, neste caso, o estilo de programação seria considerado meia boca. Existem inúmeras razões para usar o operador ponto. A principal é para manter cada coisa no seu lugar. Um bom programadaor não sobrecarrega o interpretador PHP fazendo com que ele tenha que extrair uma variável que esteja embutida numa string literal. Use e abuse do operador ponto, é para isto que ele foi bolado.
Conversão para maiúsculas e minúsculas
Existem situações nas quais se faz necessário transformar todos os caracteres de determinada string em maiúsculas ou minúsculas (considere a consistência de dados de entrada, por exemplo). A linguagem PHP possui algumas funções muito interessantes para facilitar a tarefa. Segue um exemplo de utilização:
'str to lower' significa 'str para minúsculas' e 'str to upper' significa 'str para maiúsculas'. Estas funções fazem exatamente o que o nome indica. A primeira chamada à função echo() põe na tela "uma string contendo letras maiúsculas" e a segunda põe "UMA STRING CONTENDO LETRAS MAIÚSCULAS".
Note que o parâmetro da função echo() contém uma chamada a uma outra função. Como a função no parâmetro retorna a string modificada, é como se a string modificada estivesse sendo enviada como parâmetro para função echo().
Substrings
Uma substring nada mais é do que um pedaço de uma string. Observe o exemplo:
Para extrair um naco da string 'stringLonga' utilizamos a função substr(), a qual precisa de três argumentos:
- A string da qual queremos extrair a substring
- A posição inicial, onde a substring começa a ser extraída
- O comprimento da substring que deve ser extraída
A primeira posição de uma string é 0 (zero) e não 1 como você poderia pensar (lembra da convenção adotada para os arrays? É a mesma coisa). Pois bem, vamos analisar o que a função substr() faz no nosso código. Ela pega a string $stringLonga, ajusta a posição inicial em 0 (o início da string) e pára de extrair caracteres na quarta posição a partir da posição inicial. O resultado acaba sendo 'Esta'. Se tivéssemos chamado echo() com substr($strLonga, 7, 3), o resultado seria obviamente 'uma'. Confira contando as posições na stringona e lembre-se, espaços são caracteres!
Substituindo partes de strings
Uma das coisas mais chatas de fazer é a substituição de parte de uma string. Não tendo suporte na linguagem, a maioria dos programadores acaba extraindo substrings à esquerda e à direita da porção que deve ser substituída e depois concatenam as duas substrings enfiando o trecho que deve ser substituído entre as duas. Só a explicação já é uma nhaca, imagine o código! Mas o super PHP ataca novamente. Tchan, tchan, tchan, tchan:
É tudo isso e... SÓ isso. A função str_replace() substitui os caracteres 'esquentar' por 'fundir' na string $stringona. Ah! a tradução de 'replace' é 'substituir'.
Explodindo uma string
Não tem nada a ver com ataque terrorista. Explodir uma string significa quebrá-la em pedaços tendo como referência um caracter que indica onde ela deve ser quebrada. Xiii... é melhor dar um exemplo:
Gente, é brincadeirinha. O código acima é brincadeirinha, não serve para nada. Imagine uma função com um nome deste tamanho... xiiihihi. Este tutorial está chegando ao fim e não é agora que vou avacalhar de vez.
Bem, imagine que você tenha uma string delimitada por um determinado caracter. Uma URL, por exemplo. A URL poderia ser "http://www.nomeDoHost.com.br/dir/dir/nomeDoArquivo.ext". Queremos obter apenas o nome do arquivo, então:
Primeiro definimos uma variável que contém a URL. Como queremos apenas extrair o nome do arquivo desta URL, é melhor dividir a string nos seus vários elementos. É fácil perceber que estes elementos estão sendo separados por uma barra (/) portanto, basta utilizar este 'separador' para dividir a string nos seus componentes. É aí que entra a função explode().
A função explode() pede dois parâmetros. O primeiro é o caracter separador e o segundo é a string que deve ser explodida. Esta função retorna um array contendo todos os elementos encontrados entre os separadores. Guardamos este array na variável $cacosDaUrl. O array $cacosDaUrl é devolvido pela função explode() da seguinte forma:
Agora é só pegar o elemento com a chave 3 do array $cacosDaUrl e... missão cumprida. Porém (sempre tem que existir um porém), e se houver mais de um diretório envolvido? Coisa do tipo "http://www.NomeDoHost.com.br/dir1/dir2/NomeDoArquivo.ext"? Então pegamos o elemento de chave 4. Mas, e se não soubermos de antemão a posição do nome do arquivo? Raciocine: o nome do arquivo é SEMPRE o último elemento do array. Uma das formas de obtê-lo é calculando a chave do último elemento contando o número de elementos. Outra solução é inverter as posições dos elementos, ou seja, o último será o primeiro (elemento 0), o penúltimo o segundo, e assim por diante. Assim temos certeza da posição do nome do arquivo na chave 0. A função count(), que devolve o número de elementos de um array você já conhece. Então, vamos dar uma olhada na segunda alternativa, a que foi utilizada no exemplo.
Criamos a variável $arrayReverso para poder armazenar o valor de retorno da função array_reverse(). Esta função faz exatamente o que estamos precisando. Enviamos como parâmetro o array $cacosDaUrl e recebemos de volta um array com todos os elementos invertidos, ou seja, o nome do arquivo estará na posição 0. Daí, para conferir, basta dar um echo() em $arrayReverso[0].