regex qui ne marche pas

regex qui ne marche pas - PHP - Programmation

Marsh Posté le 10-02-2007 à 17:10:17    

Bonjour,
 
J'ai une regex qui ne marche pas car je voudrai récupérer uniquement le premier mot alors qu'elle m'en récupère plusieurs, voici un exemple :
 

Citation :


$source = '<td><span class="Aria14_black"><b>Mercedes Classe C 220</b> CDI Elegance</span></td>';
preg_match('#<td><span[^>]+><b>(.+) (.+)</b>#', $source, $infos);
echo 'source: '.$source.'<br />';
echo 'Marque : '.$infos[1].'<br />';
echo 'Modèle : '.$infos[2].'<br />';
 


 
et voilà ce que j'obtient :

Citation :


source: Mercedes Classe C 220 CDI Elegance
Marque : Mercedes Classe C
Modèle : 220


 
 
alors que je voudrai obtenir:
source  : Mercedes
modèle : Classe C 220
 
Quelqu'un a t'il la solution ?
 
 :hello:

Reply

Marsh Posté le 10-02-2007 à 17:10:17   

Reply

Marsh Posté le 10-02-2007 à 18:08:09    

Reply

Marsh Posté le 11-02-2007 à 18:58:09    

Merci pour la solution. A quoi correspond le ? dans les deuxiemes paranthèses ?
Et si je veut que les premières paranthèses captures les deux premiers mots, comme,t dois-je m'y prendre ?

Reply

Marsh Posté le 11-02-2007 à 21:25:03    

hugoOo a écrit :

Merci pour la solution. A quoi correspond le ? dans les deuxiemes paranthèses ?


 
Ça passe le "+" en mode "paresseux" (marche sur un "*" aussi). Typiquement, sur un truc du style :
FOOaaaaaaBARaaaaaaBARblablabla  
 
FOO(a*?)BAR capturera FOOaaaaaaBAR (il est "paresseux", il s'arrête au premier "BAR" trouvé), alors que  
FOO(a*)BAR capturera FOOaaaaaaBARaaaaaaBAR (il s'arrête au dernier "BAR" de la chaîne).
 
Il y a une option que tu peux ajouter à ton masque pour rendre les */+ paresseux par défaut, voir doc.
 

Citation :


Et si je veut que les premières paranthèses captures les deux premiers mots, comme,t dois-je m'y prendre ?


 
<b>([^ ]+ [^ ]+) (.+?)</b>


Message édité par sielfried le 11-02-2007 à 21:25:56

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 11-02-2007 à 22:14:07    

C'est comme le U ?

Reply

Marsh Posté le 11-02-2007 à 23:40:57    

Ouais voilà c'est U l'option en question.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed