[Résolu] Problème de regex...

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 : [Résolu] Problème de regex...

par titerm » 19 janv. 2008, 21:03

Bah disons que la solution qu'il retient au finale correspond plus à une école qu'à l'autre...
peut importe, faire une regexp pour cela est un mauvais choix.

par Berzemus » 19 janv. 2008, 14:44

Y'a deux écoles.. récuperer tout après le premier, ou ne récuperer que ce qu'il y a derrière le dernier.. C'est différent, mais c'est pas "incorrect".

C'est à Zest de dire ce qu'il veut vraiment (sa demande n'est pas très claire à ce sujet), mais en même temps, s'il savait tout ce qui est possible, il n'y aurait plus de questions.

Peut-être qu'au fond, un petit explode() pourrait résourdre tout ses problêmes.
$var = "abc;123;tagada";
$array = explode(";",$var);

echo $array[0]; //abc
echo $array[1]; //123
echo $array[2]; //tagada

par titerm » 19 janv. 2008, 14:19

Bas elle matchera trop.
Si tu as plusieurs ; dans la chaîne, elle match tout après le premier ; hors il demande la fin de la chaîne après un ;

test sur un cas avec plusieurs ;

Code : Tout sélectionner

abcdef;888;jhgkjh;123
maintenant, c'est peut être moi qui interprète mal la demande

par Berzemus » 19 janv. 2008, 12:17

(...) Nb: La reg exp fournie plus haut est incorrecte (...)
incorrecte ?

Ben je voudrais bien savoir ou tiens :roll: .

Sinon, bien qu'il est vrai que le regex est un peu overkill pour cette application, il ne faut jamais rater une occasion de s'y intéresser ^-^

par titerm » 19 janv. 2008, 11:17

La solution la plus logique
substr(strrchr($var, ";"), 1);
La solution basé sur les regexp (déconseillé dans un cas aussi simple),
Nb: La reg exp fournie plus haut est incorrecte
preg_match('/([^;]*)$/',$var,$matches)
[/code]

par zest » 18 janv. 2008, 15:56

ok pour strstr(), mais il prend en compte la virgule ';'...
$var = "abcdef;ghty";
$rslt = strstr($var,";");
echo $rslt;
ce qui donne

Code : Tout sélectionner

;ghty
il me faudrait le même résultat, sans la virgule et quelque soit la longueur de la chaîne...

bon en fait je contourne le problème...
$var = "abcdef;ghty";
$rslt = strstr($var,";");
echo trim($rslt,";");
et c'est OK :D

par Berzemus » 18 janv. 2008, 15:04

un regex comme ceci devrait faire l'affaire:
(?<=;).*
Il prend tout ce qui est précédé par un ";"

par Genova » 18 janv. 2008, 15:03

Bonjour,
regarde les fonctions strstr() ou strchr() qui semblent bien indiquées.

[Résolu] Problème de regex...

par zest » 18 janv. 2008, 14:54

Bonjour,
Comme je suis une grossse truffe dans l'utilisation des REGEX :? , j'aimerais savoir comment extraire la fin d'une chaîne après un certain caratère:
j'ai par exemple:
$var = "abcdef;ghty";
coment récuperer "ghty", ou en général la fin de cette chaine après la virgule, en sachant qu'elle peut être (la fin de la chaîne :lol: ) de n caratères.

Merci