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 print
para 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
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 abaixoLC_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 <b>nada</b>"
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 <b>nada</b>";
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.