begin process at 2012 05 29 00:22:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Comment autoriser uniquement les caracteres alphanumeriques dans une chaine ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment autoriser uniquement les caracteres alphanumeriques dans une chaine ?

lundi 31 décembre 2007 à 21:07:50 | Comment autoriser uniquement les caracteres alphanumeriques dans une chaine ?

WizardNx

Salut !

Voilà, j'ai un petit probleme...
Je suis pas très très fort avec les syntaxes ereg...
Ce que je veux faire c'est interdire tout caractère qui n'est pas alphanumérique...
Caractères accentués compris.
En gros seulement abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789, rien d'autre...
Le tout, si c'est possible, sans faire une boucle qui passe en revue chaque caractere de ma chaîne...

J'avais donc fait :

    $regx = "[[:punct:]]|[[:blank:]]|[[:space:]]|[[:cntrl:]]";
    if(eregi($regx, $login))
    {
        // C'est pas bon change de login
    }

Le truc c'est que cette méthode interdit beaucoup de caractere mais laisse passer plein d'autre caracteres que je ne veux pas. J'ai donc pensé à faire l'inverse et n'autoriser que [a-z,A-Z,0-9] ... J'ai essayé de plein de manière différentes mais bon j'arrive pas...

Une idée ?

merci d'avance
WizardNx qui va s'arracher une touffe de cheuveux.
lundi 31 décembre 2007 à 21:58:53 | Re : Comment autoriser uniquement les caracteres alphanumeriques dans une chaine ?

WizardNx

C'est bon j'ai trouvé :

if(!preg_match('`^([[:alnum:]]+)$`', $login))
{
    // Pas bon
}

Faut que je rajoute juste un ptit truc car il me prend le caractere & mais c'est le seul apparement... Ca devrait pas être sorcier.

Par contre une bonne partie de mon cuir chevelu y est passé...
C'est vraiment mal foutu les regex !!

@ plouche
WizardNx.
lundi 31 décembre 2007 à 22:02:27 | Re : Comment autoriser uniquement les caracteres alphanumeriques dans une chaine ?

neigedhiver

Salut, if (preg_match('`^([a-z0-9]+)$`i', $login)) { // C'est ok } else { // C'est pas ok } D'une manière générale, utilise plutôt preg_* que ereg : les PCRE sont toujours plus rapides que les regex standards, à motif équivalent. Un ptit tuto sur les pcre : http://lumadis.be/regex/tuto_pcre.php
lundi 31 décembre 2007 à 22:04:03 | Re : Comment autoriser uniquement les caracteres alphanumeriques dans une chaine ?

neigedhiver

Plutôt que la classe de caractères alnum, je te recommande de lister les caractères que tu veux. Avec l'option de recherche i, la PCRE est insensible à la casse. Avec mon motif, il n'accepte que les lettres (majuscules et minuscules) et les chiffres.
lundi 31 décembre 2007 à 22:58:36 | Re : Comment autoriser uniquement les caracteres alphanumeriques dans une chaine ?

WizardNx

oki :)

merci bien

@ plouche
lundi 31 décembre 2007 à 23:02:31 | Re : Comment autoriser uniquement les caracteres alphanumeriques dans une chaine ?

WizardNx

J'ai un autre probleme là...

Byzarrement il accepte le &... mais pire, si je mets un &, derrière je peux rajouter n'importe quel caractère ca va passer.... :(
mardi 1 janvier 2008 à 01:51:10 | Re : Comment autoriser uniquement les caracteres alphanumeriques dans une chaine ?

malalam

Administrateur CodeS-SourceS
Hello,

ctype_alnum() sera plus efficace.
mardi 1 janvier 2008 à 18:21:15 | Re : Comment autoriser uniquement les caracteres alphanumeriques dans une chaine ?

WizardNx

Salut et bonne année :)

Pour ctype_alnum() j'ai lu dansd la doc "En terme de langage C , les lettres sont [A-Za-z] et cette fonction est équivalente à preg_match('/^[a-z0-9]*$/i', $text) ."

J'ai quand même essayé et je me retrouve avec le même probleme, tout marche bien, mais le caractère & passe tranquil et après lui je peux rajouter n'importe quel caractère qui ne passerai pas normalement et ca passe...

Je comprends pas pour ce pµt@!|\| de &

@plouche
WizardNx.
mardi 1 janvier 2008 à 19:38:00 | Re : Comment autoriser uniquement les caracteres alphanumeriques dans une chaine ?

WizardNx

Je vous ai mis le bout de code en ligne pour que vous puissiez tester, c'est plus parlant :

http://www.icreativ.com/regex/

faites des essais :

azerty => ca passe
aze,rty => ca passe pas
azerty& => ca passe alors que ca ne devrait pas
azerty&;,:,,:;, => ca passe aussi
azerty;,,:;,&:,:;,: => ca passe pas

On dirait que le caractère & fait s'arreter l'analyse de la chaine... que ce soit avec preg_match, ereg, eregi, ctype_alnum.....

:/

@ plouche
Nx.
mercredi 2 janvier 2008 à 09:23:32 | Re : Comment autoriser uniquement les caracteres alphanumeriques dans une chaine ?

malalam

Administrateur CodeS-SourceS
Tu me pardonneras, mais moi :
<?php
echo (int)ctype_alnum('azerty&');
echo (int)ctype_alnum('azerty&;,:,,:;,');
?>
ça me renvoie 0 dans les 2 cas.


1 2

Cette discussion est classée dans : chaine, caracteres, uniquement, autoriser, alphanumeriques


Répondre à ce message

Sujets en rapport avec ce message

Delimiteur de chaine de caracteres [ par phpwankenobi ] Bonjour,Je ne sais pas comment utiliser le dlimiteur "\" pour delimiter les chaines de caracteres, en clair je souhaite recuperer et/ou passer correct Chaine de caracteres [ par JoJo738 ] Bonsoir, Je cherche une fonction permettant de faire un tableau avec une chaine de caracteres. De sorte que j'obtienne : $chaine = 'aaabacddc';Array( Chaine de caracteres [ par bizzard4 ] Bonjour !J'ai une formulaire avec un input qui prend le chemin d'une image en local.. Le resultat est par exemple : C:\easyphp\www\news\images\test.jp Probleme de caracteres [ par LaurentKOogar ] Bonjour,Je lis un Flux XML et dans la recuperation des datas j'ai des caracteres qui pour moi sont totalement inconnu: Ã© => é Ã§ =>  çDon Couper uen chaine de caracteres [ par SatanCorporation ] Salut a tous!!!!comment je peux faire pour couper uen chaine de caracteres apres que n soit egal a n en coupant celle ci au mot suvant :$mavariable="1 chaine de caracteres [ par cyberastuces ] Bonjour,Voila je cherche comment afficher un message si un chaine de caracteres contien que des espace et aucun caracteres.J'ai penser à :if(!eregi( " enregistrer une chaine de caracteres dans un stream [ par Yossi ] Bonjour, je voudrais savoir comment enregistrer une chaine de caracteres dans un stream sans passer par un fichier. Ce que je veux c'est le contra Ajouter des points de suspension dans une chaine de caracteres issue d'un BDD [ par pfl34 ] Bonsoir à tous, Je dois afficher un tarif pour plusieurs produits. Je ne maitrise pas la saisie des différents éléments (c'est le client). Pour faire recherche chaine decaractere [ par ju0123456789 ] Bonjour J'ai une question toute bete, je souhaite faire un controle de chaine de caractere, controler que la chaine n'a uniquement que des caracteres Bug dans modification de chaine de caracteres [ par eikichi ] Bonjour a tous, J'ai un petit probleme avec la fonction substr_replace. Dans la fonction addSpace que vous pourrez voir ci-dessous, je ne parviens pa


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales