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";