Page 1 sur 1

Expressions régulières... Ouais ça fait peur !

Posté : 26 oct. 2008, 20:16
par euhkah
J'ai pas pour habitude de demander de l'aide, pour être honnête, je trouve d'habitude toujours réponse à mes questions sans le faire.. Mais voilà, là j'ai un problème avec ces expressions régulières, et je crois que je pourrais lire et relire mon cours des millions de fois, je n'y comprendrai jamais rien..

J'ai une chaine qui se compose comme ça :

Code : Tout sélectionner

[new]blablablablablabla[/new][search]bloblobloblobloblobloblo[/search]
Et je cherche simplement une fonction qui va me donner blablabla et une autre qui va me donner bloblobloblo..
C'est peut etre un truc qui ressemble à

Code : Tout sélectionner

strtok("/\[new\](.+?)\[\/new\]/is", "[new]blablablablablabla[/new][search]bloblobloblobloblobloblo[/search]");
? J'ai essayé ça mais j'pense pas qu'on puisse utiliser une expression régulière dans un strtok non ?

Pouvez-vous m'aider ?..

Posté : 26 oct. 2008, 20:19
par chrislabricole
Non c'est preg_match() pour les expressions régulières ;)

Posté : 26 oct. 2008, 20:33
par Invité
Je te remercie.
Au passage, il y'a quelqu'un qui à quelque chose de plus joli que ça ? :

Code : Tout sélectionner

$t = [new]blablablablablabla[/new][search]bloblobloblobloblobloblo[/search]; preg_match("/\[new\](.+?)\[\/new\]/is", $t), $matches, PREG_OFFSET_CAPTURE); str_replace("[new]", "", str_replace("[/new]", "", $matches[0][0]));
Parce que j'en ai marre de coder comme un pierrafeu.. Ca marche mais c'est tout moche !

Posté : 26 oct. 2008, 21:42
par chrislabricole
Tu peux peut-être regarder le fonction preg_replace() ;)

Re: Expressions régulières... Ouais ça fait peur !

Posté : 27 oct. 2008, 10:47
par Berzemus
Et je cherche simplement une fonction qui va me donner blablabla et une autre qui va me donner bloblobloblo..

Code : Tout sélectionner

#(bla){3}#
et

Code : Tout sélectionner

#(blo){4}#
Non ? :wink:

Et sinon, pour récupérer ce qui se trouve entre [new] et [search], au cas ou, c'est toujours intéressant:
$texte = '[new]blablablablablabla[/new][search]bloblobloblobloblobloblo[/search]';
$expression = '#\[[^]]+\]([^[]+)[^]]+\][^]]+]([^[]+)#';
preg_match_all($expression,$chaine,$matches, PREG_SET_ORDER);

// pour voir ce qu'il y a dans $matches
echo "<pre>";
print_r($matches);
echo "</pre><br><br>";

echo "new: ".$matches[1]."<br>";
echo "search :".$matches[2]."<br>";

Posté : 27 oct. 2008, 15:15
par jojolapine
Et sinon pour en rajouter un peu; un outil indispensable en ligne:
http://lumadis.be => testeur d'expression régulière en php! (+ un tuto)

Posté : 28 oct. 2008, 05:16
par euhkah
Merci à vous tous !

Serieux.. '#\[[^]]+\]([^[]+)[^]]+\][^]]+]([^[]+)#' ... Ca fait pas fliper ?! On dirait des insultes dans une BD..
Et le testeur ça déchire, ça m'évite de tester tout seul et de voir des messages d'erreur partout parce que je n'y comprend rien !!

Merci ;)

Posté : 28 oct. 2008, 11:00
par Berzemus
Merci à vous tous !

Serieux.. '#\[[^]]+\]([^[]+)[^]]+\][^]]+]([^[]+)#' ... Ca fait pas fliper ?! On dirait des insultes dans une BD..
Et le testeur ça déchire, ça m'évite de tester tout seul et de voir des messages d'erreur partout parce que je n'y comprend rien !!

Merci ;)
C'était pour faire peur, comme c'est halloween..

Celle-ci aurait marché tout aussi bien:
$regex = "#\[new\]([^[]+)\[/new]\[search]([^[]+)\[/search]#";

Posté : 28 oct. 2008, 14:14
par Hywan
Hey :),

Et encore c'est rien, y a plus costaud comme expression régulière. Mais il n'y a rien de compliqué dans tout ça, c'est très logique. Il suffit de bien comprendre. Si ça t'intéresse, penche toi sur la théorie des langages avec les grammaires régulières, les langages réguliers et donc les expressions régulières. Tu verras que tout ça à un sens :).

Posté : 28 oct. 2008, 14:40
par Calimero
Hey :),

Et encore c'est rien, y a plus costaud comme expression régulière. Mais il n'y a rien de compliqué dans tout ça, c'est très logique. Il suffit de bien comprendre. Si ça t'intéresse, penche toi sur la théorie des langages avec les grammaires régulières, les langages réguliers et donc les expressions régulières. Tu verras que tout ça à un sens :).
C'est sûr qu'après la lecture de ce message on est tout de suite rassuré, et les regexp ne font plus peur du tout :langue:

Posté : 28 oct. 2008, 15:26
par Hywan
Uè ça va hein :-* … C'est vrai que c'est facile et même si visuellement c'est impressionnant, ça n'a rien de compliqué, c'est très logique. Et c'est une petite merveille les expressions régulières (et les automates d'une manière générale) :).