Logo Hardware.com.br
OoDragooNoO
OoDragooNoO Geek Registrado
3.5K Mensagens 61 Curtidas
#2 Por OoDragooNoO
03/05/2009 - 02:01
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 feliz.png

flw xD/
DragaO~
Core_Dump
Core_Dump General de Pijama Registrado
3.2K Mensagens 111 Curtidas
#6 Por Core_Dump
03/05/2009 - 12:43
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.
adeus.gif
OoDragooNoO
OoDragooNoO Geek Registrado
3.5K Mensagens 61 Curtidas
#7 Por OoDragooNoO
03/05/2009 - 14:25
candeia disse:


expressoes regulares sao as melhores, o problema eh a complexidade pra montar uma nao_quero_nem_ver.png
alias, recomendo, ao autor do topico (obvio), a leitura disso caso nao saiba ER ainda feliz.png

italiagian disse:


eu consigo fazer isso de um modo..."tosco", mas funcional big_green.png
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 big_green.png
$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 wink.png
(e, convenhamos, ER's sao muito uteis pros mais diversos casos; alias, algumas das funçoes usadas aqui muito provavelmente sao ER's internamente nao_quero_nem_ver.png)

qualquer duvida "perguntae" wink.png

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/
DragaO~
Core_Dump
Core_Dump General de Pijama Registrado
3.2K Mensagens 111 Curtidas
#8 Por Core_Dump
03/05/2009 - 14:31
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]
adeus.gif
OoDragooNoO
OoDragooNoO Geek Registrado
3.5K Mensagens 61 Curtidas
#9 Por OoDragooNoO
03/05/2009 - 15:30
candeia disse:


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/
DragaO~
luizcarlossj
luizcarlossj Membro Senior Registrado
179 Mensagens 4 Curtidas
#10 Por luizcarlossj
03/05/2009 - 17:37
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.
italiagian
italiagian Membro Junior Registrado
75 Mensagens 0 Curtidas
#12 Por italiagian
04/05/2009 - 06:27
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..
© 1999-2025 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal