Palavras-chave: PHP, strings, substr, strpos
Um dos tipos de dados com mais recursos na linguagem PHP é sem dúvida as strings. A linguagem PHP possui inúmeras funções para manipulação de strings e uma das mais utilizadas é o substr.
O substr é responsável por retornar um pedaço da string. Para isto ele se utiliza de três parâmetros: a própria string, o índice inicial e a quantidade de caracteres a ser retornada.
Acontece que podemos utilizar também um índice negativo, desta forma o PHP analisa a string contando N caracteres a partir do final, e não a partir do início. Veja a seguir alguns exemplos:
<?php $texto = "eu não sou besta pra tirar onda de herói"; echo substr($texto, 0, 16); // eu não sou besta echo "<br>\\n"; echo substr($texto, 11); // besta pra tirar onda de herói echo "<br>\\n"; echo substr($texto, 11, 9); // besta pra echo "<br>\\n"; echo substr($texto, -5); // herói echo "<br>\\n"; ?>
Também podemos utilizar a substr() em combinação com a strpos(). A strpos detecta a posição que uma string ocorre dentro de uma expressão.
No exemplo seguinte, detectamos onde ocorre a palavra “http://” para retornar somente o domínio presente no texto:
<?php $texto = "retornarei somente o domínio de http://www.pablo.blog.br"; $posicao = strpos($texto, 'http://'); echo substr($texto, $posicao+11); // pablo.blog.br echo "\\n<br>"; ?>







5 comentários
Feed de comentários deste artigo
22 maio 2007 às 12:08
orgutus
No caso de strings (acentuadas) em UTF-8, é melhor usar o mb_substr.
Usando só o substr, a string resultante aprensenta erros de codificação. No mais, é a mesma sintaxe.
30 novembro 2007 às 15:40
Tropa de Elite
Valeu, obrigado pela diga…
4 dezembro 2007 às 13:30
Heigler
Simples e objetivo.
Parabéns.
Apenas uma dúvida: Há como obter a posição final através do strpos? Seguindo o exemplo temos
$texto = “retornarei somente o domínio de http://www.pablo.blog.br“;
mas e caso eu quisesse resgatar a string de um formulário por exemplo onde eu jamais saberia a posição final exata para usar o substr.
Exemplificando:
$texto = “retornarei somente o domínio de http://www.pablo.blog.br mais conteúdo etc etc”;
Quero usar parâmetros que retornem a string partindo de http até .br mas não sei a localização exata do final.
Abraços,
30 novembro 2008 às 22:40
Djeison
Muito bom, me ajudou muito essa dica;
Abraço.
26 julho 2010 às 17:07
Dhuankles Castro
muito boa a sua dica.. parabens