Aplicativos em PHP/Trabalhando em PHP com/Strings
substr -- Retorna uma parte de uma string
string substr ( string string, int start [, int length] )
Exemplo 1. Uso básico de substr()
<?php $rest = substr("abcdef", 1); // retorna "bcdef" $rest = substr("abcdef", 1, 3); // retorna "bcd" $rest = substr("abcdef", 0, 4); // retorna "abcd" $rest = substr("abcdef", 0, 8); // retorna "abcdef" // Outra opção é acessar atravéz de chaves $string = 'abcdef'; echo $string{0}; // retorna a echo $string{3}; // retorna d ?>
Se start for negativo, a string retornada irá começar no caractere start a partir do fim de string.
Exemplo 2. Usando um inicio negativo
<?php $rest = substr("abcdef", -1); // retorna "f" $rest = substr("abcdef", -2); // retorna "ef" $rest = substr("abcdef", -3, 1); // retorna "d" ?>
Exemplo 3. Usando um length negativo
<?php $rest = substr("abcdef", 0, -1); // retorna "abcde" $rest = substr("abcdef", 2, -1); // retorna "cde" $rest = substr("abcdef", 4, -4); // retorna "" $rest = substr("abcdef", -3, -1); // retorna "de" ?> <h2>Sobrescrevendo Strings</h2> str_replace str_replace -- Substitui todas as ocorrências da string de procura com a string de substituição mixed str_replace ( mixed pesquisa, mixed substitui, mixed assunto [, int &count] ) <pre> <?php // Fornece: <body text='black'> $bodytag = str_replace("%body%", "black", "<body text='%body%'>"); // Fornece: Hll Wrld f PHP $vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U"); $onlyconsonants = str_replace($vowels, "", "Hello World of PHP"); // Fornece: você comeria pizza, cerveja e sorvete todos os dias $frase = "você comeria frutas, vegetais, e fibra todos os dias."; $saudavel = array("frutas", "vegetais", "fibra"); $saboroso = array("pizza", "cerveja", "sorvete"); $novafrase = str_replace($saudavel, $saboroso, $frase); // Uso do parâmetro count está disponível no PHP 5.0.0 $str = str_replace("ll", "", "good golly miss molly!", $count); echo $count; // 2 ?>
substr_replace
substr_replace -- Substitui o texto dentro de uma parte de uma string
string substr_replace ( string string, string replacement, int start [, int length] )
<?php $var = 'ABCDEFGH:/MNRPQR/'; echo "Original: $var<hr>\n"; /* Estes dois exemplos substituem tudo de $var com 'bob'. */ echo substr_replace($var, 'bob', 0) . "<br>\n"; echo substr_replace($var, 'bob', 0, strlen($var)) . "<br>\n"; /* Insere 'bob' direto no começo de $var. */ echo substr_replace($var, 'bob', 0, 0) . "<br>\n"; /* Estes dois exemplos substituem 'MNRPQR' em $var com 'bob'. */ echo substr_replace($var, 'bob', 10, -1) . "<br>\n"; echo substr_replace($var, 'bob', -7, -1) . "<br>\n"; /* Deleta 'MNRPQR' de $var. */ echo substr_replace($var, '', 10, -1) . "<br>\n"; ?>
Encontrar Posição de caractere em String
strpos
strpos -- Encontra a posição da primeira ocorrência de uma string
int strpos ( string str, string procurar [, int offset] )
Exemplos strpos()
<?php //$str = 'abc'; $str = 'cba'; $procurar = 'a'; $posicao = strpos($str, $procurar); // Note o uso de ===. Simples == não funcionaria como esperado // por causa da posição de 'a' é 0 (primeiro) caractere. if ($pos === false) { echo "A string '$procurar' não foi encontrada na string '$str'"; } else { echo "A string '$procurar' foi encontrada na string '$str'"; echo " e está na posição $posicao"; } ?> <?php //$email = 'ribafs@gmail.com.br'; $email = 'ribafs@gmail.com'; $usuario = substr ($email, 0, strpos ($email, '@')); // Lembrando: substr ( string string, int start [, int length] ) $dominio = substr ($email, strpos ($email, '@')+1); echo "Usuário '$usuario' e Domínio '$dominio'"; // o comprimento default é até o final ?>
Contando Ocorrências de Substring em String
substr_count -- Conta o número de ocorrências de uma substring
int substr_count ( string str, string conte_me )
substr_count() retorna o número de vezes que a substring conte_me ocorre na string str.
<?php $str = "Olá mundo do PHP"; if (substr_count($str, "do") == 0) echo "nenhum"; // same as: if (strpos($str, "do") === false) echo "nenhum"; ?>
Exemplo 1. Exemplo substr_count()
<?php print substr_count("This is a test", "is"); // mostra 2 ?>
Trocando Ponto por Vírgula e vice-versa
Se temos campos tipo moeda, devemos exibir com vírgula e gravar no banco com ponto.
Para isso uma boa saída é usar a dupla de funções implode e explode.
Antes de exibir na tela (em consultas):
$f_custo_produtivo=explode(".",$f_custo_produtivo);
$f_custo_produtivo=implode(",",$f_custo_produtivo);
Antes de gravar no banco (inclusão e atualização):
$f_custo_produtivo=explode(",",$f_custo_produtivo);
$f_custo_produtivo=implode(".",$f_custo_produtivo);
Conversão de Strings
$foo = 1 + "10.5";echo $foo."<br>"; // $foo é float (11.5) $foo = 1 + "-1.3e3";echo $foo."<br>"; // $foo é float (-1299) $foo = 1 + "bob-1.3e3";echo $foo."<br>"; // $foo é integer (1) $foo = 1 + "bob3";echo $foo."<br>"; // $foo é integer (1) $foo = 1 + "10 Small Pigs";echo $foo."<br>"; // $foo é integer (11) $foo = 4 + "10.2 Little Piggies";echo $foo."<br>"; // $foo é float (14.2) $foo = "10.0 pigs " + 1;echo $foo."<br>"; // $foo é float (11) $foo = "10.0 pigs " + 1.0;echo $foo."<br>"; // $foo é float (11)
Trabalhando com os Caracteres de Strings
// Pega o primeiro caracter da string $str = 'Isto é um teste.'; $first = $str{0}; echo $first."<br>"; // Pega o terceiro caracter da string $third = $str{2}; echo $third."<br>"; // Pega o último caracter da string $str = 'Isto ainda é um teste.'; $last = $str{strlen($str)-1}; echo $last."<br>"; // Modifica o ultimo caracter da string $str = 'Olhe o mal'; echo $str{strlen($str)-1} = 'r';
Validação de Caracteres
ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit
ctype_alnum - Checa por caracteres alfanuméricos
$strings = array('AbCd1zyZ9', 'foo!#$bar'); foreach ($strings as $testcase) { if (ctype_alnum($testcase)) { echo "The string $testcase consists of all letters or digits.\n"; } else { echo "The string $testcase does not consist of all letters or digits.\n"; } }
ctype_alpha - Checa por caracteres alfabéticos
$strings = array('KjgWZC', 'arf12'); foreach ($strings as $testcase) { if (ctype_alpha($testcase)) { echo "The string $testcase consists of all letters.\n"; } else { echo "The string $testcase does not consist of all letters.\n"; } }
ctype_digit - Checa por caracteres numéricos
$strings = array('1820.20', '10002', 'wsl!12'); foreach ($strings as $testcase) { if (ctype_digit($testcase)) { echo "The string $testcase consists of all digits.\n"; } else { echo "The string $testcase does not consist of all digits.\n"; } } // Alerta: Ao executar veja que somente é válido quando todos são dígitos // Não é indicado para testar valores decimais, com ponto ou vírgula
ctype_lower - Checa por caracteres minúsculos
$strings = array('aac123', 'qiutoas', 'QASsdks'); foreach ($strings as $testcase) { if (ctype_lower($testcase)) { echo "The string $testcase consists of all lowercase letters.\n"; } else { echo "The string $testcase does not consist of all lowercase letters.\n"; } }
ctype_punct - Checa por Caracteres que não sejam espaço em branco nem alfanuméricos
$strings = array('ABasdk!@!$#', '!@ # $', '*&$()'); foreach ($strings as $testcase) { if (ctype_punct($testcase)) { echo "The string $testcase consists of all punctuation.\n"; } else { echo "The string $testcase does not consist of all punctuation.\n"; } }
ctype_space - Checa por espaços em branco
Validação de Tipos
intval is_array is_bool is_callable is_double is_float is_int is_integer is_long is_null is_numeric is_object is_real is_resource is_scalar is_string isset print_r serialize settype strval unserialize unset
Cases
strtoupper($str) - tudo maiúsculo strtolower($str) - tudo minúsculo ucfirst($str) - Converte para maiúscula o primeiro caractere de uma STRING ucwords($STR) - Converte para maiúsculas o primeiro caractere de cada PALAVRA
Índices com Str_Pad
str_pad -- Preenche uma string para um certo tamanho com outra string
string str_pad ( string input, int pad_length [, string pad_string [, int pad_type]] )
Exemplo:
$players =
array("DUNCAN, king of Scotland"=>"Larry", "MALCOLM, son of the king"=>"Curly", "MACBETH"=>"Moe", "MACDUFF"=>"Rafael");
echo "
"; // Print a heading echo str_pad("Dramatis Personae", 50, " ", STR_PAD_BOTH) . "\n"; // Print an index line for each entry foreach($players as $role=>$actor) echo str_pad($role, 30, ".") . str_pad($actor, 20, ".", STR_PAD_LEFT) . "\n"; echo "
";
Resultado:
Dramatis Personae DUNCAN, king of Scotland.....................Larry MALCOLM, son of the king.....................Curly MACBETH........................................Moe MACDUFF.....................................Rafael
String para TimeStamp
// Absolute dates and times $var = strtotime("25 December 2002"); $var = strtotime("14/5/1955"); $var = strtotime("Fr1, 7 Sep 2001 10:28:07 -1000"); // The current time: equivalent to time( ) $var = strtotime("now"); // Relative times echo strtotime("+1 day"); echo strtotime("-2 weeks"); echo strtotime("+2 hours 2 seconds"); //Care should be taken when using strtotime( ) with user-supplied dates. It's better to limit the use of strtotime( ) to cases when //the string to be parsed is under the control of the script, for example, checking a minimum age using a relative date: // date of birth: timestamp for 16 August, 1983 $dob = mktime(0, 0, 0, 16, 8, 1982); // Now check that the individual is over 18 if ((float)$dob < (float)strtotime("-18 years")) echo "Legal to drive in the state of Victoria";