Como pegar Parte de um texto com PHP


PHP possui algumas funções interessantes que permitem-nos trabalhar com textos de forma fácil. Neste artigo vou te mostrar Como pegar Parte de um texto com PHP e também outras dicas para se trabalhar com sequências de caracteres.

Por exemplo, se você tem em mãos a seguinte frase: “Blogs de conteúdo realmente bom são raros na internet” e quer pegar via código PHP apenas a parte que antecede “na internet”, como faria? Essa e várias outras dúvidas serão esclarecidas no longo deste artigo; então, continue lendo…

Como pegar Parte de um texto com PHP: substr

A função substr permite-nos pegar parte de um texto. Veja o código abaixo, comento depois:

1
2
3
4
5
$texto = "Blogs de conteúdo realmente bom são raros na internet";
 
$resultado = substr($texto, 0,42);
 
echo $resultado;
$texto = "Blogs de conteúdo realmente bom são raros na internet";

$resultado = substr($texto, 0,42);

echo $resultado;

O código acima imprimirá na tela o seguinte: “Blogs de conteúdo realmente bom são raros”. Exatamente o que precisávamos. Contudo, veja os parâmetros da função substr:

– parâmetro 1: o texto que será trabalhado
– parâmetro 2: Posição de início, ou seja: onde começar a pegar a parte do texto que você deseja.
– parâmetro 3: Comprimento que o retorno deve possuir.

A função substr pela o texto que você passou como parâmetro, procura a posição que você também passou como segundo parâmetro e começa a contagem de caracteres até atingir o comprimento passado como terceiro parâmetro. Por fim, é retornado a parte do texto que compreenda todos os parâmetros que você informou.

Agora, como eu sabia que “na internet” estava na posição 42? De fato, eu simplesmente contei os caracteres, on the other hand, caso você não conheça o texto de antemão, você pode utilizar a função strpos para saber qual posição um trecho do texto se encontra. Veja abaixo:

1
2
3
4
5
6
7
$texto = "Blogs de conteúdo realmente bom são raros na internet";
 
$posicao = strpos($texto,"na internet");
 
$resultado = substr($texto, 0,$posicao);
 
echo $resultado;
$texto = "Blogs de conteúdo realmente bom são raros na internet";

$posicao = strpos($texto,"na internet");

$resultado = substr($texto, 0,$posicao);

echo $resultado;

O código acima irá retornar o mesmo resultado do código anterior. Aqui porém não passei a posição 42 para a função substr, invés disto, obtive a posição utilizando a função strpos do PHP.

Como pegar parte final de um texto com substr

Quando você quer pegar a parte final de um dado texto, você também pode usar substr, veja o exemplo abaixo:

1
2
3
4
5
6
7
$texto = "Blogs de conteúdo realmente bom são raros na internet";
 
$posicao = strpos($texto,"realmente");
 
$resultado = substr($texto,$posicao);
 
echo $resultado;
$texto = "Blogs de conteúdo realmente bom são raros na internet";

$posicao = strpos($texto,"realmente");

$resultado = substr($texto,$posicao);

echo $resultado;

Neste caso, pego a palavra realmente e todo o resto do texto.

Se você passar uma posição negativa para substr, a contagem inicia-se do final para o início.
Se você passar um comprimento negativo, o valor passado define o número de caracteres a ser omitido de trás para frente.

Como pegar Parte de um texto com PHP: strstr

Você também pode usar a função strstr. Veja abaixo:

1
2
3
4
5
$texto = "Blogs de conteúdo realmente bom são raros na internet";
 
$resultado = strstr($texto,"realmente");
 
echo $resultado;
$texto = "Blogs de conteúdo realmente bom são raros na internet";

$resultado = strstr($texto,"realmente");

echo $resultado;

A função strstr possui dois parâmetros, o primeiro é o texto a ser trabalhado, o segundo é a palavra ou frase buscada. Note que a função strstr faz pegar a posição da ocorrência da palavra buscada e retorna todo o resto do texto a partir de tal posição. Obviamente o retorno será idêntico ao código anterior, com um detalhe de que você não precisou utilizar a função strpos para pegar a posição.

strstr possui ainda um terceiro parâmetro opcional, que se configurado como true, irá, em vez de retornar o resto do texto a partir da posição encontrada, irá retornar todo o texto desde o início até a posição encontrada. Veja o exemplo abaixo:

1
2
3
4
5
$texto = "Blogs de conteúdo realmente bom são raros na internet";
 
$resultado = strstr($texto,"realmente",true);
 
echo $resultado;
$texto = "Blogs de conteúdo realmente bom são raros na internet";

$resultado = strstr($texto,"realmente",true);

echo $resultado;

O retorno agora foi: “Blogs de conteúdo”. PHP conta ainda com a versão case-insensitive (não diferencia maiúsculas e minúsculas) de strstr, que é a stristr. Se você passar como parâmetro a palavra “realmente” à função strstr e o texto conter a palavra “Realmente”, a função irá falhar pois ela diferencia maiúsculas de minúsculoas. Já stristr irá trabalhar conforme o esperado, pois para ela ambas as versões “realmente” e “Realmente” ou ainda “ReAlMeNTE” são equivalentes.

Uma curiosidade: strchr é uma função sinônimo de strstr. Embora o nome é diferente, os parâmetros e comportamento são os mesmos.

Como pegar Parte de um texto com strrchr

strrchr, diferente de strpos, substr e strstr, não considera a posição da primeira ocorrência, mas da última. Por exemplo, se tu quiser pegar o restante de um texto a partir da última ocorrência da letra a, poderia usar assim strrchr($texto,”a”). No exemplo abaixo vou pegar o apenas o url que identifica uma categoria em um url, para isso vou passar o caractere barra “/” como segundo parâmetro para a função strrchr. Veja:

1
2
3
4
5
$texto = "http://fazer-site.net/category/programacao-php";
 
$resultado = strrchr($texto,"/");
 
echo $resultado;
$texto = "http://fazer-site.net/category/programacao-php";

$resultado = strrchr($texto,"/");

echo $resultado;

O retorno será: “/programacao-php”. Um detalhe é que strrchr só trabalha com um único caractere, então não é, por exemplo, possível passar uma palavra ou frase como parâmetro de busca. Neste caso, caso você queira encontrar a última ocorrência de “realmente” em um texto que possua mais de uma ocorrência para esta palavra, terá de utilizar outros meios.

Conclusão

Quando for usar a função strpos em textos muito grandes e souber mais ou menos a posição, pode definir o ponto de início passando um terceiro parâmetro. Com isto você torna a função muito mais rápida, pois não precisará efetuar a busca em boa parte do texto. Por exemplo, se você tem um texto com mil caracteres e sabe que a palavra ou frase desejada está depois dos 500 caracteres, poderia usar a função desta forma: strpos($texto,”palavra buscada”, 500). Agora a função só vai iniciar as buscas no texto a partir da posição 500, poupando tempo e consumo de recursos.

Até o próximo artigo aqui no blog

Leave a Reply