PHP: 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 vida dos programadores. Só temos que agradecer.

Neste módulo daremos uma olhada nos principais aspectos da manipulação de strings que o PHP oferece.

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:

Dê uma olhada na 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, colocar a variável dentro das aspas duplas. O resultado seria o mesmo, porém o estilo de programação é considerado meia boca. Existem inúmeras razões para usar o operador ponto. A principal, no entanto, é apenas 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 da função echo(). Observe o que aconteceu com a letra u acentuada (ú).

Obtendo 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!

Existem mais alguns detalhes a respeito da função substr(), todos eles muito interessantes. Dê uma olhada no manual do PHP.

Substituindo partes de strings

Uma das coisas mais chatas de realizar é 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 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… éca. Este tutorial está chegando ao fim e não é agora que vamos avacalhar.

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, e sempre tem que existir um porém, 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 sucessivamente. Assim temos a 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].

O tutorial PHP Rapidinho termina por aqui. Por incrível que pareça, com estas noções iniciais você pode fazer milagres. Expandir seus conhecimentos agora fica por sua conta. Use e abuse das funções nativas do PHP. Use e abuse da imaginação e da criatividade – para todo problema existe pelo menos uma solução. Entre várias soluções à sua escolha, existe sempre uma que é mais elegante e que, não por acaso, geralmente é a mais simples.

Usando a função strtoupper() e com todas as letras, quero agradecer ao Leendert Brouwer, pois descaradamente usei seu tutorial como roteiro. Devo confessar que a maior parte do texto (e todos os exemplos) são da autoria do Leendert. Praticamente só fiz a tradução mas… não aguentei e adicionei algumas coisinhas.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *