OoDragooNoO
Geek
Registrado
3.5K Mensagens
61 Curtidas
ateh onde eu sei, nao existe uma funçao assim, ela eh especifica demais
o que tu pode fazer eh criar uma funçao que receba um parametro e retorne, por exemplo, "true" caso a string informada esteja nesse formato ou "false" caso nao esteja
a gente tbm pode te ajudar a fazer essa funçao, mas fica dificil soh com isso, por isso eu peço que de mais detalhes sobre o que tu quer fazer 
flw xD/
italiagian
Membro Junior
Registrado
75 Mensagens
0 Curtidas
gostaria de uma funcao parecida como essa
desse exemplo abaixo:
[php]
$conta= $_POST ["conta"];
if(!is_numeric($conta)){
$errors .= "Somente numeros !
";
}
[/php]
o meu objetivo é proteger o nome completo do usuario , contendo somentes as letras do nome dele, como exemplo acima do giancarlo.
OoDragooNoO
Geek
Registrado
3.5K Mensagens
61 Curtidas
italiagian
Membro Junior
Registrado
75 Mensagens
0 Curtidas
funciona bem mas quando separo o nome conforme abaixo nao funciona:
[PHP]
$nome = "giancarlo sobrenome sobrenome";
if (ctype_alpha($nome)) {
echo "somente letras";
} else {
echo "nao contem somente letras\n";
}
[/PHP]
tem como fazer algo para aceitar os espaços , assim a funcao funciona
Core_Dump
General de Pijama
Registrado
3.2K Mensagens
111 Curtidas
Use expressoes regulares. Vou postar um exemplo depois.
Um exemplo em uma unica pagina chamada regex.php:
[php]
<?php
print "
";
$regex = "/([A-Z]{1}[a-z]+\s{0,1}$)+/";
$text = $_GET['nome'];
if ($text){
do_reg($text, $regex);
}
function do_reg($text, $regex)
{
if (preg_match($regex, $text)) {
print "Ok, nome aprovado";
}
else {
print "Nome em formato nao aceito";
}
}
?>
[/php]A regex "([A-Z]{1}[a-z]+\s{0,1}$)+" significa:
[A-Z]{1} = Uma letra maiuscula apenas uma vez seguida de:
[a-z]+ = letras minusculas ou maiusculas uma ou mais vezes.
\s{0,1} = seguida de um espaco simples 0 ou 1 vez ate o final da frase '$'.
O parentese forma um grupo () e o metacaracter + significa o grupo uma ou mais vezes.
Observe que a regex obriga nomes com iniciais maiusculas e nao contempla caracteres especiais (ç, acentos). Vai ter que mudar a regex para obter essa funcionalidade.
OoDragooNoO
Geek
Registrado
3.5K Mensagens
61 Curtidas
expressoes regulares sao as melhores, o problema eh a complexidade pra montar uma 
alias, recomendo, ao autor do topico (obvio), a leitura disso caso nao saiba ER ainda 
eu consigo fazer isso de um modo..."tosco", mas funcional 
segue abaixo:
[php]
<?
$nome = "algum nome aqui";
//substitui todos espaços adicionais por apenas um espaço
$nome = str_replace(" ", " ", $nome);
//retira os espaços do inicio e do fim da string
$nome = trim($nome);
//transformando "$nome" em um array a partir dos espaços
$nome = explode(" ", $nome);
//nesse caso, vamos ter "algum" em "$nome[0]", "nome" em "$nome[1]" e
//"aqui" em "$nome[2]"
//nossa flag 
$erro = false;
//fazendo um laco pra percorrer todos os valores
foreach($nome as $n)
{
//se a posiçao em questao nao conter apenas letras...
if(!ctype_alpha($n))
{
//...atualizamos a nossa flag e saimos do laco
$erro = true;
break;
}
}
if($erro)
{
echo "a string nao contem apenas letras e espaços";
}
else
{
echo "a string contem apenas letras e espaços";
}
?>
[/php]
essa provavelmente vai funcionar pra qualquer tipo de caractere alfabetico :feliz
mas ainda assim recomendo fortemente estudar ER's, pois o exemplo do candeia abrange nao somente PHP, mas muitas outras linguagens 
(e, convenhamos, ER's sao muito uteis pros mais diversos casos; alias, algumas das funçoes usadas aqui muito provavelmente sao ER's internamente
)
qualquer duvida "perguntae" 
referencia das funçoes:
str_replace : http://br.php.net/manual/pt_BR/function.str-replace.php
trim : http://br2.php.net/manual/pt_BR/function.trim.php
explode : http://br.php.net/manual/pt_BR/function.explode.php
ctype_alpha : http://br.php.net/manual/pt_BR/function.ctype-alpha.php
flw xD/
Core_Dump
General de Pijama
Registrado
3.2K Mensagens
111 Curtidas
Na minha opiniao as ER sao muito mais poderosas e sao faceis de aprender, alem de terem importancia para programacao em geral.
Recomendo ao autor do topico o livro "Expressoes Regulares, uma abordagem divertida" do Aurelio Jargas, um aprendizado para iniciantes realmente divertido.
Uma versao do script mais didatica, vai retornar a porcao da expressao regular coincidente:
[php]
<?php
print "
";
$regex = "/([A-Z]{1}[a-z]+\s{0,1})+$/";
$text = $_GET['nome'];
$text = trim($text);
if ($text){
do_reg($text, $regex);
}
function do_reg($text, $regex)
{
if (preg_match($regex, $text, $r)) {
print "$r[0]";
}
else {
print "Falha";
}
}
?>
[/php]
OoDragooNoO
Geek
Registrado
3.5K Mensagens
61 Curtidas
nao sei se eu interpretei errado, mas pelo modo que tu falou, pareceu que no meu post anterior ao teu, eu desmereci as ER's, quando o que fiz foi justamente o contrario (ateh pus o site do livro (que alias, tenho e jah li))
o unico problema que eu vejo com as ER's, eh que eh dificil, ao menos pra mim, "pensar" nisso
tipo, a exemplo deste topico, eu primeiro faria o codigo que eu citei pra soh depooooois pensar em tentar usar ER's
sei lah, eh o que eu acho
mas em momento algum desmereci as ER's
flw xD/
luizcarlossj
Membro Senior
Registrado
179 Mensagens
4 Curtidas
Olá...eu estava lendo os posts, e acho legal mesmo vc usar as ER, como pessoal está recomendando...Eu tb programo em PHP, mas acho q esse tipo de validação ficaria melhor se fosse em JS, muito mais rápido e não precisa ficar esperando pelo servidor...é só uma sugestão...abraços
Athlon XP 2200+ ; ECS K7VMM+ ; 480 MB DDR266 ; S3 Graphics ProSavageDDR (32 MB) ;Maxtor 6E040L0 (40 GB, 7200 RPM, Ultra-ATA/133) ; Monitor LCD L1553S - LG; Windows XP Professional SP2.
Core_Dump
General de Pijama
Registrado
3.2K Mensagens
111 Curtidas
OoDragooNoO,
O post foi so para estimular o Italiagian a aprender ER, nem sempre temos uma funcao que resolve o problema tao bem como a que voce postou.
italiagian
Membro Junior
Registrado
75 Mensagens
0 Curtidas
muito bom adorei, valeu a todos ficou otimo esse topico...
vou estudar esse ER's...
achei muito interessante...
eu fiz uma GAMBIARRA... KKKK
deu certo com o que eu quero....
ficou assim , e acho que ficou seguro o campo do nome.
[PHP]
$nome = ($_POST['nome']);
$nomelimpo = (eregi_replace("[[:space:]]","","$nome"));
if (ctype_alpha($nomelimpo)) {
$_SESSION["nome"] = ($_POST["nome"]);
} else {
$errors .= "Digite apenas letras em seu nome!
";
unset($_SESSION['nome']);
}
[/PHP]
mas e muito bom essa teoria dos ER's me interessei mesmo
GALERA MAIS UMA VES, agradeço pela ajuda..