Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Separar palavras de uma string no PHP
Linux user
Publicado por albert guedes em 06/10/2009

Login: albertguedes, 611472 pontos | Blog: http://www.socrates.if.usp.br/~arcguede
[ Hits: 8240 ]

Separar palavras de uma string no PHP

É muito pra lá de comum em formulários web recebermos um campo onde a variável é uma frase.

Dizendo em termos de programação, uma frase seria conjuntos de caracteres separados por algum(ns) caractere(s).

No caso das frases usadas por nós humanos (sic), uma frase é formada por conjunto de letras separados por um caractere branco. No caso de datas, por exemplo '14/09/1970', a barrinha '/' separa os conjuntos de números.

Como se percebe, a 'frase' que se trabalha em programação é mais geral do que a nossa linguística. E nesse aspecto, um modo de separar esses conjuntos de caracteres é uma "necessidade básica" de todo programador.

Para fazer isso em PHP, considere a string '$frase'

$frase="O rato roeu a roupa do rei de roma.";

Para separar cada palavra dessa variável, usamos a função explode():

$array=explode(" ",$frase);

e assim, cada célula de $array guardará cada palavra da frase. Exemplo:

print $array[3]; // Imprimirá a palavra 'roeu'.

Explicando o explode(): essa função pega uma delimitador (que pode ser um ou mais caracteres), separa a string de acordo com esse delimitador e retorna para uma string onde palavra separada fica numa célula sozinha. Sua forma é:

$array=explode($delimitador,$string);

No exemplo, o delimitador foi o caractere branco (o mais requisitado por aí). No caso da data, teríamos:

$data='14/09/1970';

$array=explode("/",$data);

print $array[2]; // Imprimirá '09'.

Mas o explode é mais geral que isso. Pegue a string:

$string="347812396fcsd7yc123vfqwe4jh23123e312";

Percebam que tem o conjunto '123' se repetindo nela. Esse pode ser o delimitador da string.

$array=explode("123",$string);

e teremos:

print $array[0]; // Imprime ''3478".
print $array[1]; // Imprime ''96fcsd7yc".
print $array[2]; // Imprime ''vfqwe4jh23".
print $array[3]; // Imprime ''e312".

Podem verificar.

Mas para trabalhar decentemente com essa separação de 'frases', precisamos saber quantas palavras há nela. Para isso fazemos:

$array=explode("123",$string);
$n_palavras=count($array);

for($i=0 ; $i < $n_palavras ; $i++ ){
    print "$array[$i] \n";
}

Que imprimirá:

3478
96fcsd7yc
vfqwe4jh23
e312

Aqui a função count() conta quantas células tem em $array e retorna esse número.

Não foi uma coisa rápida, mas espero que os iniciantes peguem esses conceitos, para daqui pra frente conseguirem caminhar um bom trecho da estrada sozinhos.

Até a próxima dica.


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Separar caracteres de uma string no PHP
   Dica Linux recomendada Imprimindo números no formato de moeda em PHP
   Dica Linux recomendada Guia de Expressões Regulares
   Dica Linux recomendada Remover espaços no fim de linha - Eclipse
   Dica Linux recomendada PHP: Substituindo somente a primeira ocorrência de uma palavra na string

Comentários
[1] Comentário enviado por ./.ronin em 06/08/2011 - 02:56h:

$frase = 'viva o linux porque nós amamos a liberdade';
$palavras = explode( ' ', $frase );
foreach( $palavras as $palavra )
{
echo "\n" . '<br />' . $palavra;
}

[2] Comentário enviado por sidnei.weber em 18/08/2011 - 22:38h:

Teria como fazer para esse caso, separar cada palavra da frase, inserir um caractere antes de cada palavra e retornar uma nova frase como os caracteres adicionados para uma nova variavel?

Acho q deu pra entender né hehe

[3] Comentário enviado por albertguedes em 19/08/2011 - 00:43h:

Sim, no caso das palavras, se você tem uma array "$letras[]"com as letras que você quer, então basta fazer

for($i=0 ; $i < $n_palavras ; $i++ ){
$array[$i] = $letras[$i].$array[i];
}

Ai casa casa de "$array[]" têm a letra que está em "$letras[]" adicionado.
Para ter a frase de volta, é só fazer

$frase = '';

for($i=0 ; $i < $n_palavras ; $i++ ){
$frase.= $array[i]." ";
}

onde coloquei ." " porque é o espaço entre as palavras, sem isso as palavras ficariam juntas.

Em um passo só, você pode fazer tudo assim:

$frase = '';
for($i=0 ; $i < $n_palavras ; $i++ ){
$frase.= $letras[$i].$array[i]." ";
}

Oque gera um código melhor. Tenta isso, qualquer dúvida posta ai. Abraços.


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.