A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa

PHP rapidinho

Qui

20

Abr

2006


15:35

(155 votos, média 4.52 de 5) 


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:

\n"); echo(strtoupper($stringComMaiusculas)); ?>

'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:

$cacosDaUrl[0] = "http:" $cacosDaUrl[1] = "www.NomeDoHost.com.br" $cacosDaUrl[2] = "dir" $cacosDaUrl[3] = "NomeDoArquivo.ext"

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].

Informações adicionais