Jump to content
Fórum Script Brasil
  • 0

ereg ou preg_match


Tiagojul

Question

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 to post
Share on other sites

10 answers to this question

Recommended Posts

  • 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      149287
    • Total Posts
      645679
×
×
  • Create New...