utilisation de preg_match

Résolu
cs_joebuz Messages postés 321 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2013 - 14 déc. 2005 à 02:05
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 16 déc. 2005 à 23:33
bonjour,
voila j'ai 4 type de phrases (pour l'instant) et je veux en extraire le morceau compris entre // et //

1- $phrase = "salut visiteur //act_001.gif//";
2- $phrase = "salut visiteur //act_001.gif// coucou ca va ? ";
3- $phrase = "//act_001.gif// coucou ca va ? ";
4- $phrase = "//act_001.gif//";

j'utilise ceci :
preg_match("/^(\/\/)?([^\/\/]+)/i", $phrase, $matches);

$var = $matches[2];

normalement $var = act_001.gif
mais cela ne fonctionne que pour la 3° et la 4° type de phrase, si je mets du texte avant (1° et 2°) ca ne fonctionne pas !

A l'aide ??


joebuz

12 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
15 déc. 2005 à 13:36
preg_replace('`//(.+?)//`sim','',$chaine);

ça devrait fonctionner.

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
14 déc. 2005 à 08:40
Salut,

enlève le ^ qui signifie "début de la chaîne" dans ton preg_match :-)

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_joebuz Messages postés 321 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2013
14 déc. 2005 à 10:25
ah ok merci !!


joebuz
0
cs_joebuz Messages postés 321 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2013
14 déc. 2005 à 10:53
c bon ca marche mais je l'ai modifie comme ca :

preg_match("/(\/\/)([a-z0-9_\.]{1,})([\/\/]+)/i",

par contre si j'ai plusieurs fois : //act_001// dans la meme phrase il ne m'affiche que le premier !!

comment faire pour tous les extraire ?

PS : si vous connaissez une adresse ou l'on explique bien preg_match ca me serais utile, parce que dans le manuel PHP il n'explique pas toute la syntaxe comme ^ ou /i


joebuz
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
14 déc. 2005 à 15:53
preg_match_all() dans ce cas là pour les avoir tous (fr.php.net)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_joebuz Messages postés 321 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2013
15 déc. 2005 à 01:24
ok, merci ca fonctionne. exemple :

$a = "//act_001// salut visiteur //act_025// coucou ca va ? ";

preg_match_all("/(\/\/)([a-z0-9_\.]{1,})([\/\/]+)/i",
$a, $matches);

$matches[2][0] --> act_001
$matches[2][1] --> act_025

Mais en fait (desole d'etre chiant, mais c'est comme ca qu'on apprends !) c'est pas réellement ce que je chercha a faire !!!

en fait il faudrait que je remplace tout ces elements par autre chose ex :

$a = "//act_001// salut visiteur //act_025// coucou ca va ? ";
deviendrait
$a = " salut visiteur coucou ca va ? ";

Pour ca j'ai été voir dans le manuel PHP et j'ai trouvé ceci :

preg_replace

et j'en ai fait ceci :

$patterns = array ("/(\/\/)([a-z0-9_\.]{1,})([\/\/]+)/i", $a);
$replace = ('coucou pour essai');
$b = preg_replace($patterns, $replace, $a);
echo $b;

Mais bien sur ca ne marche pas !!


joebuz
0
cs_joebuz Messages postés 321 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2013
16 déc. 2005 à 04:17
ouah, merci trop cool , ca marche trop trop bien !!!!

MERCI !!!!!!!!!!!!!!!

par contre j'aimerais bien que tu m'explique quand meme !
a quoi ca correspond
--> (.+?)
--> sim
--> $1


joebuz
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 déc. 2005 à 22:59
. c'est "n'importe quel caractère"
+ c'est "un ou plusieurs"
et ? c'est "un ou aucun"

ensuite i c'est pour la casse c'est insensible à la casse, s et m faudrait que je vérifie, c'est pas obligatoire (le reste non plus d'ailleurs).

pour le $1 c'est la condition qui satisfait la première parenthèse capturante.

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_joebuz Messages postés 321 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2013
16 déc. 2005 à 23:05
ok merci,
si j'ai bien compris
//(.+?)// signifie "un ou plusieurs ou aucun n'importe quel caractere compris entre // et // , c'est ca ?, si oui ca sert a rien alors de mettre ? puisqu'il n'y aura jamais aucun charactere entre // et //, non ?

et sinon pour le i j'ai pas tout compris


joebuz
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 déc. 2005 à 23:16
"puisqu'il n'y aura jamais aucun charactere entre // et //, non ?"

en théorie oui ;-)

"et sinon pour le i j'ai pas tout compris"

en fait ici il ne sert à rien car // en minuscules et majuscules c'est pareil, le i signifie que ça ignore la casse, ça veut dire que si tu mets


preg_replace('`BLABLA`sim','',$chaine);

bah BLABLA sera remplacé mais aussi blabla

sans le i seul BLABLA serait pris en compte :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_joebuz Messages postés 321 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2013
16 déc. 2005 à 23:24
ok et merci bcp de ton aide, dernier pitite chose si tu connais une url ou il explique tout les differents symbole je veux bien, merci
@+


joebuz
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
16 déc. 2005 à 23:33
heu www.expreg.com de tête il me semble que c'est ça.

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Rejoignez-nous