OVH Cloud OVH Cloud

Tester une chaine

6 réponses
Avatar
Romain
Bonjour,
Peut'on definir une taille minimun et maximun pour une chaine de caractere
(par exemple 6 carac mini ,10 maxi)?
Peut'on egalement imposer une liste de caractere valide pour la constitution
de cette chaine( uniquement abcd...xyz)?

Merci pour votre aide.

6 réponses

Avatar
Jean-Marc Molina
Peut'on definir une taille minimun et maximun pour une chaine de
caractere

(par exemple 6 carac mini ,10 maxi)?

Tu peux le faire au niveau du champ texte HTML :
<input type="text" name="mon_texte" maxlength="6">

Peut'on egalement imposer une liste de caractere valide pour la
constitution

de cette chaine( uniquement abcd...xyz)?

En utilisant les fonctions d'expressions régulières de PHP (preg_*), cf
manuel pour une description très détaillée de cette syntaxe assez
particulière pour le profane. Par exemple pour valider le nom d'un
utilisateur :
"/[a-z]+[a-z0-9]*/i"
...
Ici [a-z] c'est un caractère alphabétique, 0-9, alphanumérique. + ça veut
dire au moins 1, * ça veut dire 0 ou plus. i pour "non sensible à la
casse"... Je te laisse lire le manuel pour plus d'infos :)

JM

--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)

Avatar
Olivier Miakinen
(exemples non testés - à vérifier à tout hasard)


Peut'on definir une taille minimun et maximun pour une chaine de caractere
(par exemple 6 carac mini ,10 maxi)?


http://fr.php.net/manual/fr/print/ref.strings.php
http://fr.php.net/manual/fr/print/function.strlen.php

$len = strlen($str);
if ((len < 6) || (len > 10)) {
/* traitement d'erreur */
}

Peut'on egalement imposer une liste de caractere valide pour la constitution
de cette chaine( uniquement abcd...xyz)?


http://fr.php.net/manual/fr/print/ref.strings.php
http://fr.php.net/manual/fr/print/function.strcspn.php

if (strcspn($str, "abcdefghijklmnopqrstuvwxyz") > 0) {
/* traitement d'erreur */
}

http://fr.php.net/manual/fr/print/ref.pcre.php
http://fr.php.net/manual/fr/print/function.preg-match.php

if (preg_match("[^a-z]", $str) > 0) {
/* traitement d'erreur */
}


Olivier

Avatar
Thibaut Allender
"Romain" wrote in message
news:bmb7kj$42m$
Bonjour,
Peut'on definir une taille minimun et maximun pour une chaine de
caractere

(par exemple 6 carac mini ,10 maxi)?


<?php
$len = strlen($machaine);
if ($len <= 10 && $len >= 6) // valide
?>

Peut'on egalement imposer une liste de caractere valide pour la
constitution

de cette chaine( uniquement abcd...xyz)?


<?php
if (eregi("[a-z]+",$machaine)) // valide
?>

mais si on doit tester les 2, alors autant tout faire avec une expression
regluliere (on pouvait aussi le faire pour le premier test, mais ca n'est
pas vraiment la solution la plus simple et la plus economique)

on peut donc faire ca pour les 2 en un :

<?php
if (eregi("[a-z]{6,10}",$machaine)) // valide
?>

(utiliser ereg() si on veut des minuscules uniquement)

Merci pour votre aide.


de rien, a +

--
+ thibaut allender // web design + php dev + digital photo
+ http://www.capsule.org

Avatar
Thibaut Allender
"Jean-Marc Molina" wrote in message
news:bmdq08$hvm$

Tu peux le faire au niveau du champ texte HTML :
<input type="text" name="mon_texte" maxlength="6">


Jean-Marc, ce que tu dis est tres vrai, mais c'est aussi tres facile a
contourner ;)

a+

--
+ thibaut allender // web design + php dev + digital photo
+ http://www.capsule.org

Avatar
tyoup
Peut'on definir une taille minimun et maximun pour une chaine de


caractere
(par exemple 6 carac mini ,10 maxi)?

Tu peux le faire au niveau du champ texte HTML :
<input type="text" name="mon_texte" maxlength="6">

pratique certes mais il ne faudrait pas penser que cela est suffisant ...


Ici [a-z] c'est un caractère alphabétique, 0-9, alphanumérique. + ça veut
dire au moins 1, * ça veut dire 0 ou plus. i pour "non sensible à la
casse"... Je te laisse lire le manuel pour plus d'infos :)


je signale au passage que le + est inutile, dans une expression plus
complexe il pourrait causer un grand nombre de backtracks inutiles

-- Tyoup


Avatar
Elie `woe` BLETON
Romain wrote:

| Bonjour,
| Peut'on definir une taille minimun et maximun pour une chaine de caractere
| (par exemple 6 carac mini ,10 maxi)?
| Peut'on egalement imposer une liste de caractere valide pour la constitution
| de cette chaine( uniquement abcd...xyz)?
|
| Merci pour votre aide.

Pour le traitement en HTML, je te renvoie à la réponse de Jean-Marc Molina.

Pour le traitement en PHP, je te renvoie à la réponse de Olivier Miakinen.
Je rajouterais à cette dernière une petite chose quand meme, au niveau de
l'emploi de RegEx: il faut verifier que toute la phrase matche bien ; en
effet, un seul bout pourrait matcher (constitué de lettres) alors que le reste
matcherait évidemment pas (consitué de n'importe quoi), ce qui invaliderait le
test.

Pour le coté MySQL, (bon ok, c'est évident, mais faut le dire) VARCHAR(10).

woe