Ir para conteúdo
Fórum Script Brasil
  • 0

ereg ou preg_match


Tiagojul

Pergunta

Olá a todos,

Tenho um campo de nome e gostaria que este campo só aceitasse letras, tanto maiúsculas quanto minúsculas.

Já usei a função ereg e preg_match, mas até agora nada. Segue uma das minhas tentativas:

$nome=$_POST['nome'];

if(!ereg("(^[a-zA-Z])$",$nome)) {
$erro .= "Apenas letras são permitidas no nome!";
}

Simplesmente não dá acerto. Ele aceita algumas vezes número, e outras quando tem apenas letras ele não aceita. Obviamente, o objetivo é aceitar nome completo separado por espaços: Carlos da Silva ou Carlos Silva ou simplesmente Carlos, sem nenhum outro caractere que não seja espaço e letra! Ah, e se for possível, aceitar acentos e ~.

Seria melhor utilizar a função preg_match?

Obrigado a todos!

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Ah valeu! Não sabia que existia essa função! Vi também que etem a alphanumerica.

Problema só é que em um nome você pode ter espaços. Com essa função ele não aceita espaços. Tem alguma outra função que aceitaria espaço?

O campo seria para um nome completo.

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0

Ah valeu! Não sabia que existia essa função! Vi também que etem a alphanumerica.

Problema só é que em um nome você pode ter espaços. Com essa função ele não aceita espaços. Tem alguma outra função que aceitaria espaço?

O campo seria para um nome completo.

Obrigado!

tente isso

if(preg_match('/[^A-Za-z]/',$Dados))

{

/* suas condições e informações */

}

até mais

Link para o comentário
Compartilhar em outros sites

  • 0

Ah valeu! Não sabia que existia essa função! Vi também que etem a alphanumerica.

Problema só é que em um nome você pode ter espaços. Com essa função ele não aceita espaços. Tem alguma outra função que aceitaria espaço?

O campo seria para um nome completo.

Obrigado!

tente isso

if(preg_match('/[^A-Za-z]/',$Dados))

{

/* suas condições e informações */

}

até mais

Valeu rickayron! Fiz outros testes e consegui as letras e espaço. Mas os acentos não. Dá uma olhadinha:

if (preg_match("/^[a-zA-ZãÃáÁàÀêÊéÉèÈíÍìÌôÔõÕóÓòÒúÚùÙûÛçǺª' ']+$/", $nome) ) {
    echo 'OK';
}
else {
     echo 'não';
}

Quando eu escrevo no código o nome João, ele aceita.

Agora se a variável $nome contiver João, ele não aceita. Alguma ideia?

Abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

Essa diferença deve estar acontecendo por causa da codificação da página. Tente colocar a codifição da página e do seu arquivo os mesmos, e tente novamente. Já tive o mesmo problema por causa disto, e era a codificação (navegador reconhecia uma codificação, e o arquivo estava com outra).

Link para o comentário
Compartilhar em outros sites

  • 0
Essa diferença deve estar acontecendo por causa da codificação da página. Tente colocar a codifição da página e do seu arquivo os mesmos, e tente novamente. Já tive o mesmo problema por causa disto, e era a codificação (navegador reconhecia uma codificação, e o arquivo estava com outra).

Obrigado Stoma!

Um pouco antes de ler sua resposta eu tive a ideia de utilizar a função utf8_decode($nome), aí deu certo.

Apenas uma curiosidade sobre codificação. Em todas minhas página eu começo com isso:

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Isto ajuda para acentos no texto, mas se puxo uma string com acento do banco de dados, aí não aparecem os acentos. Então eu sempre tenho que usar utf8_encode.

Mas existiria outra solução?

Link para o comentário
Compartilhar em outros sites

  • 0

Se você está tento que usar utf8_encode é porque o texto não está em um utf-8, logo, não faz sentido especificar este charset no cabeçalho.

Experimente usar:

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

Link para o comentário
Compartilhar em outros sites

  • 0
Se você está tento que usar utf8_encode é porque o texto não está em um utf-8, logo, não faz sentido especificar este charset no cabeçalho.

Experimente usar:

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

Ahh... agora entendi. Meu site tá assim: o que é texto normal está utf8, e o que vem do banco de dados está em iso-8859-1.

Como eu faria para escolher/mudar a codificação?

Abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

Para mudar a codificação dos dados que vem do banco, eu sempre uso isto:

mysql_query("SET NAMES 'utf8'");
    mysql_query('SET character_set_connection=utf8');
    mysql_query('SET character_set_client=utf8');
    mysql_query('SET character_set_results=utf8');

Eu não sei te explicar bem, porque esse comando eu nunca me dei o luxo de estudar, mas é coisa simples.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Para mudar a codificação dos dados que vem do banco, eu sempre uso isto:
mysql_query("SET NAMES 'utf8'");
    mysql_query('SET character_set_connection=utf8');
    mysql_query('SET character_set_client=utf8');
    mysql_query('SET character_set_results=utf8');

Eu não sei te explicar bem, porque esse comando eu nunca me dei o luxo de estudar, mas é coisa simples.

Abraços

Beleza! Brigadao cara!

Abraço!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...