PHP expressions reguliere
Résolu
underscape
Messages postés
57
Date d'inscription
Statut
Membre
Dernière intervention
-
underscape Messages postés 57 Date d'inscription Statut Membre Dernière intervention -
underscape Messages postés 57 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai une chaine a anlysé via un formulaire j'ai donc ecris ceci :
<?
if (ereg("^[a-z]{1}+[a-z0-9]{4,23}+[0-9a-z]{1}$",$p)==false) { echo "oui"; } else { echo "non;}
?>
visiblement cela fonctionne car ca oblige a avoir une lettre ou un chiffre en 1ere position puis chiffres et lettre ensuite entre 4 et 23 caracteres puis finir par un chiffre ou une lettre.
Mon soucis est tout bete je voudrais autorisé l'underscore mais pas que le visiteur me le mette 23 fois!
genre "a____________________________d"
alors j'ai testé ceci :
<?
if (ereg("^[a-z]{1}+[a-z0-9_]{4,23}+[0-9a-z]{1}$",$p)==false) { echo "oui"; } else { echo "non;}
?>
mais evidemment la il peu :(
je suis pas tres douée dans les expressions reguliere j'ai compris en gros mais ... vraiment en gros
un p'ti coup de main siouplait?
j'ai une chaine a anlysé via un formulaire j'ai donc ecris ceci :
<?
if (ereg("^[a-z]{1}+[a-z0-9]{4,23}+[0-9a-z]{1}$",$p)==false) { echo "oui"; } else { echo "non;}
?>
visiblement cela fonctionne car ca oblige a avoir une lettre ou un chiffre en 1ere position puis chiffres et lettre ensuite entre 4 et 23 caracteres puis finir par un chiffre ou une lettre.
Mon soucis est tout bete je voudrais autorisé l'underscore mais pas que le visiteur me le mette 23 fois!
genre "a____________________________d"
alors j'ai testé ceci :
<?
if (ereg("^[a-z]{1}+[a-z0-9_]{4,23}+[0-9a-z]{1}$",$p)==false) { echo "oui"; } else { echo "non;}
?>
mais evidemment la il peu :(
je suis pas tres douée dans les expressions reguliere j'ai compris en gros mais ... vraiment en gros
un p'ti coup de main siouplait?
A voir également:
- PHP expressions reguliere
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
7 réponses
parceque on peu faire ca??
lol je suis vraiment debutante
Et bien disons que j'aurais aimé autorisé un anderscore et pas au debut de la chaine ni a la fin.
et pendant que j'y suis question idiote, j'ai fais mon petit bout de code avec la page de commentcamarche.net voici le lien pour ceux que ca interresse :
https://www.commentcamarche.net/contents/803-php-expressions-regulieres
et j'ai vu ceci "[:punct:]";
cela va autorisé toutes les lettres accentués dans ma chaine?
lol je suis vraiment debutante
Et bien disons que j'aurais aimé autorisé un anderscore et pas au debut de la chaine ni a la fin.
et pendant que j'y suis question idiote, j'ai fais mon petit bout de code avec la page de commentcamarche.net voici le lien pour ceux que ca interresse :
https://www.commentcamarche.net/contents/803-php-expressions-regulieres
et j'ai vu ceci "[:punct:]";
cela va autorisé toutes les lettres accentués dans ma chaine?
euh? c'est ponctuation donc forcement c'est pas les caracteres accentués.. allalala
donc je modifie il y'a pas l'equivalent pour autorisé par exemple tout les éèàç?
donc je modifie il y'a pas l'equivalent pour autorisé par exemple tout les éèàç?
j'ai modifié mon code par ceci plus efficace que "ereg"
Et j'ai vu que Php va supprimé cette fonction alors...
<?
$p = utf8_encode($p);
if (preg_match("#^[a-z]{1}+([a-z0-9_àéèç]{4,23})+[0-9a-z]{1}$#",$p1)== false)
{ echo "</p>non";
} else {
echo "</p>c'est bon";
};
?>
bon y'a certainement mieux mais bon, en attendant de trouver comment limité les underscores....
Et j'ai vu que Php va supprimé cette fonction alors...
<?
$p = utf8_encode($p);
if (preg_match("#^[a-z]{1}+([a-z0-9_àéèç]{4,23})+[0-9a-z]{1}$#",$p1)== false)
{ echo "</p>non";
} else {
echo "</p>c'est bon";
};
?>
bon y'a certainement mieux mais bon, en attendant de trouver comment limité les underscores....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bin, tu peux faire un test en amont ou en aval pour les underscores,
Avec comme pattern : $sParttern = "/[_ ]{2,}/"; //Cherche au moins 2 underscrores
ou meme tu peut direct faire un preg_replace avec en $sReplace = "_";
EnjoY !
Avec comme pattern : $sParttern = "/[_ ]{2,}/"; //Cherche au moins 2 underscrores
ou meme tu peut direct faire un preg_replace avec en $sReplace = "_";
EnjoY !
j'ai lu je sais plus ou que pour limiter le nombre caracteres equivalent on doit mettre un point.
je vais testé ton bout de code sinon effectivement je pourrai creer une fonction pour detecter le nombre d'underscore et les supprimé...
bon c'est pas gagné je vais testé
merchi :)
je vais testé ton bout de code sinon effectivement je pourrai creer une fonction pour detecter le nombre d'underscore et les supprimé...
bon c'est pas gagné je vais testé
merchi :)
bon après avoir pas mal tournée en bourrique j'ai finalement opté pour ce code qui me va...
Y'a certainement mieux mais bon.. j'en ai marre lol
je post ici si cela peu aider quelqu'un
<?
//pour compter les caractères d'une chaine, ici underscore a vous d'y mettre ce que vous voulez d'autres...
$CompteUnderscore = preg_match_all("(\_)",$Pseudooo, $out, PREG_PATTERN_ORDER);
if ($CompteUnderscore >1) { etc......
//et pour evité les doublons j'ai ceci
// Si 3 chiffres identique d'affilé alors il en laisse 1
function PasDeCaIici( $toto, $maxCarac = 3) {
$var = '0123456789';
$recherche = array();
$remplace = array();
for($i=0,$len=strlen($var);$i<$len;++$i) {
$recherche[] = '~'.$var[$i].'{'.$maxCarac.',}~i';
$remplace[] = $var[$i];
}
return preg_replace( $recherche, $remplace, $toto);
}
?>
voilou
Y'a certainement mieux mais bon.. j'en ai marre lol
je post ici si cela peu aider quelqu'un
<?
//pour compter les caractères d'une chaine, ici underscore a vous d'y mettre ce que vous voulez d'autres...
$CompteUnderscore = preg_match_all("(\_)",$Pseudooo, $out, PREG_PATTERN_ORDER);
if ($CompteUnderscore >1) { etc......
//et pour evité les doublons j'ai ceci
// Si 3 chiffres identique d'affilé alors il en laisse 1
function PasDeCaIici( $toto, $maxCarac = 3) {
$var = '0123456789';
$recherche = array();
$remplace = array();
for($i=0,$len=strlen($var);$i<$len;++$i) {
$recherche[] = '~'.$var[$i].'{'.$maxCarac.',}~i';
$remplace[] = $var[$i];
}
return preg_replace( $recherche, $remplace, $toto);
}
?>
voilou