PHP - Trabalhando com string

Imagem para PHP - Trabalhando com string

PhpPostado em  8 min de leitura

Tendo até mesmo pouco contato com a programação web, já deve ter visto ou utilizado uma string. No PHP, temos as intruções echo e printpara enviar uma string para o navegador.

echo

Permite vários parâmetros.

<?php
echo "test", "test2", "test3";
// testtest2test3
echo("test2");
// test2
?>

Estando ativado no php.ini o módulo short_open_tag, você pode executar o comando echo, com a combinação de tags PHP e o sinal de =.

<?="Test";?>
// Test

print

Retorna 1 após o envio da saída, pode ser usada em expressões e permite apenas um parâmetro.

<?php
$example = print("print");
// print
echo $example;
// 1
?>

Escape

No PHP, para imprimir uma string, você pode usar aspas duplas ou simples. Podem haver casos em que seja necessário a impressão das aspas. Para que isso seja possível, temos duas formas: usar os 2 tipos de aspas ou o escape(com a barra invertida).

<?php
echo "test 'string' ";
// test 'string'
echo 'test "string" ';
// test "string"

// Escape
echo "test \"string\" ";
// test "string"
?>

O escape também pode ser utilizado com outros caracteres. No exemplo abaixo, quando usamos o cifrão, o PHP interpreta que estamos tentando enviar o conteudo de uma variável.

<?php
echo "execute $test ";
// Notice: Undefined variable: test in ..........
?>

Com o escape, temos o resultado esperado.

<?php
echo "execute \$test ";
// execute $test
?>

É válido também mencionar que a barra invertida tem outra utilidade. Combinando a barra invertida com a letra n(\n), o PHP interpreta como uma diretiva de nova linha. Importante lembrar que isso funciona apenas com aspas duplas, não temos o mesmo resultado com aspas simples.

<?php
echo "line \n new line";
// line
//  new line

echo 'line \n new line';
// line \n new line
?>

Para ser possível ver isso no navegador, é necessário colocar dentro da tag pre. Sendo o mais aconselhável, utilizar a tag br para esse fim.

<pre>
<?php
echo "line \n new line ";
// line
//  new line
?>
</pre>

<?php
echo "line <br> new line ";
// line
//  new line
?>

Algumas funções de string

Vamos notar que as funções não seguem uma convenção de nomenclatura. Essa flexibilidade é um ponto forte ao mesmo tempo um ponto fraco do PHP.

ltrim

Retira espaço em branco (ou outros caracteres) do início de uma string.

// string ltrim ( string $str [, string $character_mask ] )
<?php
$string = " Teste";
var_dump(ltrim($string));
?>

// string(5) "Teste"

rtrim

Esta função retorna uma string com espaços em branco retirados do final da string.

// string rtrim ( string $str [, string $character_mask ] )
<?php
$string = "Teste ";
var_dump(rtrim($string));
?>

// string(5) "Teste"

trim

Esta função retira os espaços em branco do início e do final da string.

// string trim ( string $str [, string $character_mask = " \t\n\r\0\x0B" ] )
<?php
$string = " Teste ";
var_dump(trim($string));
?>

// string(5) "Teste"

ucwords

Retorna uma string com o primeiro caractere de cada palavra em maiúscula, se os mesmos forem alfabéticos.

// string ucwords ( string $str [, string $delimiters = " \t\r\n\f\v" ] )
<?php
$string = "Teste para a função";
var_dump(ucwords($string));
?>

// string(21) "Teste Para A Função"

srttoupper

Retorna string com todos os caracteres do alfabeto convertidos para maiúsculas. Saiba que o alfabeto é determinada pela localidade atual. Por exemplo, "a" com til (ã) não será convertido, pois o padrão do PHP é o local "C".

// string strtoupper ( string $string )
<?php
// setlocale(LC_CTYPE, 'C'); // C = padrão PHP
$string = "Teste para a função";
var_dump(strtoupper($string));
?>

// string(21) "TESTE PARA A FUNçãO"

Podemos resolver o problema com a acentuação com a função setlocale(). Veja abaixo:

// string setlocale ( mixed $category , string $locale [, string $... ] )
// string setlocale ( mixed $category , array $locale )

Category é uma constante (ou string) especificando a categoria de funções afetadas pela definição local:

  • LC_ALL - para tudo abaixo
  • LC_COLLATE - para comparação de strings, veja strcoll()
  • LC_CTYPE - para classificação de caracteres e conversão, por exemplo strtoupper()
  • LC_MONETARY - para localeconv()
  • LC_NUMERIC - para o separador decimal (Veja também localeconv())
  • LC_TIME - para formatação de data e hora com strftime()
<?php
setlocale(LC_ALL, 'pt_BR');
$string = "Teste para a função";
var_dump(strtoupper($string));
?>

// string(21) "TESTE PARA A FUNÇÃO"

srttolower

Retorna string com todos os caracteres do alfabeto convertidos para minúsculas. E também é preciso mudar a localidade da aplicação para aceitar os acentos da língua portuguesa.

// string strtolower ( string $str )
<?php
setlocale(LC_ALL, 'pt_BR');
$string = "TESTE PARA A FUNÇÃO";
var_dump(srttolower($string));
?>

// string(21) "teste para a função"

ucfirst

Retorna uma string com o primeiro caractere em maiúscula, se o caractere for do alfabeto.

// string ucfirst ( string $str )
<?php
$string = "teste";
var_dump(ucfirst($string));
?>

// string(5) "Teste"

lcfirst

Retorna uma string com o primeiro caractere em letra minúscula se o caractere for alfabético.

// string lcfirst ( string $str )
<?php
$string = "TESTE";
var_dump(lcfirst($string));
?>

// string(5) "tESTE"

str_word_count

Conta o número de palavras dentro de string. Se o format opcional não é especificado, então o valor de retorno será um inteiro representando o número de palavras encontrado. No caso de o format estar especificado, o valor de retorno será um array, cujo conteúdo é dependente do format.

// mixed str_word_count ( string $string [, int $format [, string $charlist ]] )
<?php
$string = "TESTE de nada";
var_dump(str_word_count($string));
?>

// int(3)

strlen

Retorna o tamanho da string.

// int strlen ( string $string )
<?php
$string = "TESTE de nada";
var_dump(strlen($string));
?>

// int(13)

strstr

Retorna parte da string haystack a partir da primeira ocorrência de needle até o final de haystack.

// string strstr ( string $haystack , mixed $needle [, bool $before_needle ] )
<?php
$string = "TESTE de nada";
var_dump(strstr($string, 'de'));
?>

// string(7) "de nada"

stristr

Retorna tudo de haystack a partir da primeira ocorrência de needle até o final.

// string stristr ( string $haystack , mixed $needle [, bool $before_needle ] )
<?php
$string = "TESTE de nada";
var_dump(stristr($string, 'de'));
?>

// string(7) "de nada"

strpos

Retorna a posição numérica da primeira ocorrência de needle dentro de haystack. Diferentemente de strrpos(), esta função pode ter uma string inteira como o parâmetro needle e toda a string será usada.

// int strpos ( string $haystack , string $needle [, int $offset ] )
<?php
$string = "TESTE de nada";
var_dump(strpos($string, 'de'));
?>

// int(6)

substr

Retorna a parte de string especificada pelo parâmetro start e length.

// string substr ( string $string , int $start [, int $length ] )
<?php
$string = "TESTE de nada";
var_dump(substr($string, 0, -1));
?>

// string(12) "TESTE de nad"

str_replace

Esta função retorna uma string ou um array com todas as ocorrências de search em subject substituídas com o valor dado para replace. Se você não precisa de regras de substituição especiais (como expressões regulares), você sempre poderia usar esta função ao invés de ereg_replace() ou preg_replace().

// mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
<?php
$string = "TESTE de nada";
var_dump(str_replace("nada","tudo", $string));
?>

// string(13) "TESTE de tudo"

strip_tags

Esta função tenta retornar uma string retirando todas as tags HTML e PHP de str. Usa o mesmo sistema para retirar as tags do que fgetss().

// string strip_tags ( string $str [, string $allowable_tags ] )
<?php
$string = "<p>nada</p>";
var_dump(strip_tags($string, "<p>"));
?>

// string(11) "
//
// nada
// "

addslashes

Retorna uma string com barras invertidas antes de caracteres que precisam ser escapados para serem escapados em query a banco de dados, etc. Estes caracteres são aspas simples ('), aspas duplas ("), barra invertida () e NUL (o byte NULL).

// string addslashes ( string $str )
<?php
$string = "d'agua";
var_dump(addslashes($string));
?>

// string(7) "d\'agua"

stripslashes

Remove barras invertidas de uma string.

// string stripslashes ( string $str )
<?php
$string = "d'agua";
var_dump(stripslashes($string));
?>

// string(6) "d'agua"

htmlentities

Esta função é idêntica a htmlspecialchars() em toda forma, exceto que com htmlentities(), todos caracteres que tem entidade HTML equivalente são convertidos para estas entidades. Se você está querendo decodificar (o inverso), você pode usar html_entity_decode().

// string htmlentities ( string $string [, int $quote_style [, string $charset [, bool $double_encode ]]] )
<?php
$string = "'teste' de <b>nada</b>";
var_dump(htmlentities($string));
?>

// string(34) "'teste' de &lt;b&gt;nada&lt;/b&gt"

html_entity_decode

html_entity_decode() é o oposto da função htmlentities() no que converte todas as entidades HTML para os seus caracteres de string.

// string html_entity_decode ( string $string [, int $quote_style [, string $charset ]] )
<?php
$string = "'teste' de &lt;b&gt;nada&lt;/b&gt";
var_dump(html_entity_decode($string));
?>

// string(23) "'teste' de <b>nada</b>"

str_shuffle

str_shuffle() mistura uma string. Uma permutação de todas as possibilidades é criada.

// string str_shuffle ( string $str )
<?php
$string = "abcdef";
var_dump(str_shuffle($string));
?>

// string(6) "fcebad"

md5

Calcula o "hash MD5" de str usando » RSA Data Security, Inc. MD5 Message-Digest Algorithm, e devolve esse hash.

// string md5 ( string $str [, bool $raw_output ] )
<?php
$string = "abcdef";
var_dump(md5($string));
?>

// string(32) "e80b5017098950fc58aad83c8c14978e"

sha1

Calcula a hash sha1 de str usando » US Secure Hash Algorithm 1, e retorna esta hash. A hash é um número hexadecimal de 40 caracteres. Se o parâmetro opcional raw_output for TRUE, então o resultado é retornado em um formato binário com o tamanho de 20.

// string sha1 ( string $str [, bool $raw_output ] )
<?php
$string = "abcdef";
var_dump(sha1($string));
?>

// string(40) "1f8ac10f23c5b5bc1167bda84b833e5c057a77d2"

Conclusão

Há grandes possibilidades de se trabalhar com string no PHP. E com certeza, utilizará muito todas as funções mostradas acima. A dica é brincar bastante com elas e com as demais. Assim, fixará o conhecimento da linguagem e terá uma resposta mais rápida para possíveis questões que apareção durante o desenvolvimento.