PHP: Cortando strings (substr)

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>";
?>
This entry was posted in PHP. Bookmark the permalink.

7 Responses to PHP: Cortando strings (substr)

  1. orgutus says:

    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.

  2. Valeu, obrigado pela diga…

  3. Heigler says:

    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,

    • David says:

      Nesse caso, é melhor você usar a função que pega a URL.

      $url = $_SERVER['REQUEST_URI'];

      echo $url;

  4. Djeison says:

    Muito bom, me ajudou muito essa dica;

    Abraço.

  5. muito boa a sua dica.. parabens

  6. Marcio says:

    Muito bom post, resolvi meu problema.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>