Page 1 sur 1
probleme eregi
Posté : 10 août 2005, 22:24
par HD
salut
j'ai une variable aleatoire exemple :
$regs[1]=396.00
quand je veux utiliser la fonction :
$titre2= eregi ("([0-9|.]{1,9})", $regs[1], $regs2);
ca ne me retourne que le nombre minimum de caracteres (ici 1seul - le 3) alors que je veux recuperer le maximum (jusqu'à 9 caracteres)
la seule fois où ca a marché c'est quand j'ai fixé la taille à 6 mais c'est pas ce que je veux car la taile de la chaine $regs[1] est variable
meme en utilisant les differentes options presentees ici :
http://www.phpfrance.com/tutoriaux/inde ... regulieres ca ne marche pas
merci
Posté : 10 août 2005, 22:37
par Cyrano
Je ne comprends pas ce que tu veux récupérer au juste... explique par rapport à ton exemple ce que tu veux extraire

Posté : 10 août 2005, 22:50
par HD

en fait
$regs[1]=azea 396.00 zaea aeza
par exemple et je veux recuperer juste "396.00" sachant que ce qu'il y a avant et apres ces chiffres (et les chiffres eux memes) sont aleatoires et la longeur de la chaine est variable (d'où l'utilisation de eregi)[/quote]
Posté : 10 août 2005, 23:16
par Cyrano
Ouais, ok, là, j'essaye depuis un moment, mais je suis vraiment pas doué avec ça. En revanche, ce que j'essaye de faire, c'est dans un premier temps de trouver le motif dans la chaine, j'y arrive relativement bien, et ensuite de virer tout ce qu'on ne veut pas garder... et là, je patine un peu. Si tu as de la chance, Ripat va passer par là demain et tu auras une explication largement meilleure que la mienne sur la question.
Posté : 11 août 2005, 00:53
par HD
ok bonne chance moi
c'est quoi le motif d'une chaine ?
Posté : 11 août 2005, 07:30
par HD
finalement j'ai bricolé un truc tout seul :
$ligne = 0 ;
$titre = $regs[1] ;
$taille = strlen($titre);
$valeur = "";
while ( $ligne < $taille ) {
switch ($titre[$ligne]) {
case is_numeric($titre[$ligne]):
echo "numerique <br>";
$valeur=$valeur.$titre[$ligne];
echo "$valeur <br>";
break;
case ".":
echo "point <br>";
$valeur=$valeur.$titre[$ligne];
echo "$valeur <br>";
break;
case "0":
echo "zero <br>";
$valeur=$valeur.$titre[$ligne];
echo "$valeur <br>";
break;
default :
echo "autre <br>";
break;
}
$ligne=$ligne+1;
};
et ca marche bien pour le moment
Posté : 11 août 2005, 09:42
par Cyrano
ok bonne chance moi
c'est quoi le motif d'une chaine ?
C'est le modèle qui sert en quelque sorte de masque, on cherche le motif dans une chaine, c'est à dire on cherche ce qui correspond aux caractéristiques qu'on a inscrit dans l'expression régulière.