probleme pour valider une chaine

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme pour valider une chaine

par logone » 24 févr. 2006, 15:06

c'est impec ca fonctionne

Merci :)

Je ne connaissais pas cette fonction :lol:

par titerm » 24 févr. 2006, 14:36

Ca semble douteux comme calcul...

Résultats Timing sur 200 itérations ou sur 1 itérations

Code : Tout sélectionner

Motif#1 preg_match_all #(login)\s?\d{3}(ext)# Durée: 0.0031609535217285 sec. (106 %)

Code : Tout sélectionner

Motif#2 preg_match_all #(login)\s?\d{3}(ext)# Durée: 0.0029830932617188 sec. (100 %)
La première est toujours plus lente...

Ceci étant dis, je ne vois pas l'interet de capturer des chaines fixes dans le cas present...

Résultats Timing sur 200 itérations et je met ma proposition en 1 pour etre pénalisé...

Code : Tout sélectionner

Motif#1 preg_match_all #login\s?\d{3}ext# Durée: 0.0019588470458984 sec. (100 %)

Code : Tout sélectionner

Motif#2 preg_match_all #(login)\s?\d{3}(ext)# Durée: 0.0031490325927734 sec. (161 %)

par Cyrano » 24 févr. 2006, 13:47

En faisant le test sur le testeur REGEX de Ripat pour comparer les deux, le résultat est le suivant:
Avec parenthèses non capturantes:
Motif#1 preg_match
#(?:login)\s?\d{3}(?:ext)#

Durée: 3.2901763916016E-05 sec. (100 %)

login123ext
Avec parenthèses capturantes:
Motif#2 preg_match
#(login)\s?\d{3}(ext)#

Durée: 3.504753112793E-05 sec. (107 %)

login123ext
C'est vraiment mineur comme différences, surtout que c'est du niveau de la microseconde, mais les parenthèses non capturantes rendre le traitement un poil plus rapides.

par Hermès » 24 févr. 2006, 13:34

il y a un intérêt à faire (?: à la place de ( quand on se soucie pas de faire de la capture ? A partir du moment où on ne récupère pas les captures dans un tableau ça ne devrait rien changer mais, ça se trouve ça accélère encore plus la commande de lui préciser que non, non, on veut pas faire de capture...

par Cyrano » 24 févr. 2006, 13:26

utilise preg_match et une expression régulière PCRE:
<?php
$loginvalidate = "#(?:login)\s?\d{3}(?:ext)#i";
if (preg_match($loginvalidate, $login) && ($password=='pass'))
{
    //...
}
?>

probleme pour valider une chaine

par logone » 24 févr. 2006, 13:00

Salut,

J'ai besoin de valider une chaine voici le principe

$logvalidate='login'.'[0-9]{3}'.'ext';
if (($login==$logvalidate) && ($password=='pass')){
Je voudrais en faite avoir 2 parties fixes et une partie variable
par ex.

login333ext ou login 123ext puisse fonctionner
je supose que ma syntaxe est incorrect mais je ne vois vraiment pas comment faire.

Merci de votre aide