PHP substr: escolhendo uma parte de uma string!

Seja, com no PHP, Python ou Javascript, nos seus estudos com qualquer linguagem de programação, em algum momento, você precisará trabalhar com textos (strings) e, em alguns casos, será necessário trabalhar apenas com uma parte de um texto retornado de um local externo, como uma API ou um banco de dados. Para isso, será utilizada a função PHP substr.

Contudo, o seu entendimento pode ser algo complexo para pessoas iniciantes na programação, pois, se um programador ou programadora que está começando na área agora ver a escrita dessa função e os parâmetros que ela possui, ela pode apresentar dificuldades no entendimento do PHP substr.

Essa função está presente em várias linguagens de programação, como JavaScript, Java, C# e, uma vez que você entende o funcionamento dela em uma linguagem, a lógica será igual para qualquer linguagem que você for estudar, mudando somente a nomenclatura. 

Quer saber como o PHP substr funciona? Vamos explorar o seu funcionamento a fundo nesse artigo. Venha com a gente!

O que é PHP substr?

Essa função retorna apenas parte de um texto. Conforme os parâmetros passados na função, delimitaremos qual a parte do texto que queremos que seja retornada na tela. 

Vamos imaginar que, por alguma razão, no desenvolvimento de uma aplicação que você esteja fazendo, você proteja os arquivos PDFs nela com uma senha. Essa senha é os quatro primeiros dígitos do CPF do usuário ou usuária que esteja utilizando o sistema e queira abrir o documento. 

O que devemos fazer nesse caso? Devemos coletar apenas parte da string (que seria o CPF), de uma pessoa que acesse o sistema. Para que seja possível abrir o documento protegido, é necessário fazer uma comparação se os quatro primeiros dígitos do CPF cadastrado no banco de dados são iguais aos que foram digitados pelo usuário ou usuária. Caso sejam iguais, o documento PDF é aberto e a pessoa poderá ver o conteúdo dele. Caso contrário, o documento não será aberto. 

Nesse caso, podem ser feitas várias coisas, não apenas pegar os primeiros dígitos do CPF: 

  • Coletar dígitos do final do CPF;
  • Misturar dígitos do CPF com ano ou mês de nascimento do usuário, ou usuária;
  • Nome de algum parente da pessoa;

Entendi! Mas, como é feito isso de pegar os primeiros, os últimos dígitos? Esse será o assunto da seção a seguir. 

Qual a sintaxe?

A sintaxe seguirá o padrão a seguir: 



substr (‘string’, ‘inicio’, ‘tamanho’);

Na próxima seção, será explicado o que cada parâmetro representa, de forma detalhada. Iremos utilizar o exemplo anterior, de coleta dos primeiros dígitos de um CPF fictício como base. 

Quais os parâmetros e valores da função PHP substr?

Vejamos na tabela a seguir, de forma detalhada, os parâmetros e valores da função PHP substr ():

ParâmetroSignificado
string (texto)Seria o texto que você deseja coletar apenas uma parte dele. Esse texto seria o CPF, no exemplo. Esse parâmetro é obrigatório na função PHP substr. 
inicioSeria a partir de onde você deseja coletar a parte do texto. Em grande parte dos casos, esse parâmetro é um número inteiro:
Valores positivos → inicia de uma posição específica do texto;
Valores negativos → inicia de uma posição específica do texto, contudo, ao final dele;
Valor 0: é declarado o valor zero, quando você deseja que o início seja no primeiro caractere do texto desejado.
Esse parâmetro é obrigatório na função PHP subst. 
tamanhoA utilização desse parâmetro é opcional e ele especifica o tamanho do texto que será retornado. Por padrão, será até o final da string, mas, caso contrário, podemos declarar:
Valores positivos → se for declarado um número positivo, o tamanho será retornado desde o início desejado até o final desejado;
Valores negativos → se for declarado um número negativo, essa quantidade de caracteres será omitida no final da string;
Valor 0, null ou false: será retornada uma string vazia para esse caso. 

No caso, o exemplo anterior, de coletar os quatro primeiros dígitos do CPF ficará da seguinte maneira: 

Código Teste CPCP PHP substr

Lembrando que, toda variável no PHP, ao declarar, deve ser iniciada com o símbolo do cifrão ($)

Explicação do código acima

E o resultado será justamente os quatro primeiros dígitos, que será impresso pela função echo do PHP:

Resultado

Interessante, concorda? No próximo tópico, veremos algumas informações técnicas relacionadas a essa função. Não se preocupe, pois mais exemplos práticos serão visualizados mais adiante.

Informações técnicas

Valor retornado

Será retornado:

  • Parte de um texto;
  • FALSE quando houver falha (quando, por exemplo, for selecionado uma quantidade maior de texto fornecido pela string);
  • Poderá ser retornada uma string vazia.

Changelog

Em algumas distribuições da versão 5 do PHP (5.2.2 e 5.2.6), se a posição de início tiver um valor negativo, será retornado false. Em outras versões, a string será obtida desde o seu começo. 

Além disso, na versão 7 do PHP, se a quantidade de caracteres da string for igual ao número do início dela, será retornada uma string vazia. Em outras versões, o valor retornado era false. 

Versão do PHP

Essa função opera a partir da versão 4 do PHP. Nesse caso, como as versões atuais do PHP estão nas versões 7 e 8, não será um problema a utilização dessa função em lançamentos recentes do PHP. Somente haverá problemas se forem utilizadas versões anteriores a versão 4 dessa linguagem.

3 dicas para aplicar ao usar PHP substr

Vejamos algumas dicas para a utilização dessa função: 

  • O terceiro parâmetro é opcional e ele é utilizado apenas para uma filtragem maior de limitação dos caracteres selecionados;
  • Sempre um texto iniciará na posição 0, nunca na posição 1. Apesar de começar na primeira letra, não significa que sua posição será igual a 1;
  • Declare as variáveis com nomes entendidos por qualquer outra pessoa. Declarações como $x, $y, $valor, não são uma boa prática. No exemplo do código do CPF acima, foi declarada a variável $coletar, para fins didáticos apenas. 

Vamos ver alguns exemplos do funcionamento do php substr, na prática, na próxima seção! Preparado(a)?

4 exemplos do PHP substr na prática!

  • Exemplo 1: Você está manipulando datas e deseja coletar apenas os primeiros dígitos dos meses:
Exemplo 1 PHP substr

No caso, foi declarada uma variável $mes, com o valor agosto. Na variável $retorno_mes, será passada a variável $mes, pois é o texto que desejamos selecionar parte dele. O valor 0 foi declarado para o início, já que começaremos da primeira letra da string nesse caso e, iremos até à posição 3 como o parâmetro tamanho. 

O resultado será o seguinte, às três primeiras letras do mês: 

Resultado
  • Exemplo 2: Você deseja coletar os 5 últimos caracteres de uma palavra qualquer: 
Exemplo 2 PHP substr

Nesse caso, utilizamos a variável $doce, com o valor sorvete, e, para coletar os últimos cinco caracteres dessa palavra, utilizamos um número negativo para isso. Para o valor ser impresso na tela, poderá ser utilizada a função echo do PHP de forma direta, com a função substr, conforme exemplo anterior.

O resultado serão os cinco últimos dígitos da palavra sorvete: 

Resultado
  • Exemplo 3: Para esse exemplo, vamos declarar uma mensagem com cinco letras e o início no número 5. E aí? Qual o resultado que você verá na tela? Faça esse exercício
Exemplo 3 PHP substr

O resultado será vazio, pois o número de início é igual à quantidade de letras presente na string. O retorno será igual a uma lista vazia, conforme abaixo: 

Resultado
  • Exemplo 4: Selecionar apenas os números de uma placa fictícia de carro: 
Exemplo 4 PHP substr

Nesse caso, utilizamos a variável $placa, com o valor fictício NAG9160, e para coletar apenas os números, que seriam os quatro últimos caracteres dessa placa, utilizamos o número 3 para isso, pois, ele pegará a partir da posição 3 em diante e retornará na tela.

O resultado será o seguinte, com somente os números dessa placa sendo exibidos na tela:

Resultado

Muito legal a função php substr, não é? Ela permite que você pegue apenas parte de um texto, e o retorne. Caso houver algum erro nela, retornará o valor false e, ainda, pode ser retornada uma string vazia, caso o número de caracteres do texto seja igual à posição inicial que o texto começará. 

Além disso, essa função possui três parâmetros, dos quais dois deles são obrigatórios: o texto que você deseja coletar parte dele, o valor que você deseja que se inicie a partir do texto fornecido e o tamanho desejado, que seria um valor opcional fornecido para à função. 

Quer aprender mais sobre PHP? Confira nosso artigo sobre a função PHP in_array!