Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/04/2006, 19h32   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 44
Points : 13
Points : 13
Par défaut Pb expression régulière

Salut,

j' ai un petit probleme avec une expression régulière.

je cherche à récupérer des infos contenus entre deux chaines de caractères bien précises , mais ca ne marche pas comme je veux :s

voici le texte :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
------=_NextPart_001_19DB_01C4EF54.46CA7060
Content-Type: text/plain;
    charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
 
          =20
          =20
          =20
      =20
      ....::   MEILLEURS VOEUX 2005 !   ::....
 
      L'=E9quipe  vous pr=E9sente
      tous ses voeux de bonheur et de prosp=E9rit=E9
      au seuil de l'ann=E9e nouvelle...
 
 
      ..............................................................
 
 
 
      Cliquez sur le lien ci-dessous pour acc=E8der =E0 notre carte de =
voeux
      [  ]=20
 
------=_NextPart_001_19DB_01C4EF54.46CA7060
Content-Type: text/html;
    charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2800.1479" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><BASE=20
href=3D"file://C:\Program Files\Fichiers communs\Microsoft Shared\Papier =
=E0 lettres\">
<TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"99%" border=3D0>
  <TBODY>
  <TR>
    <TD vAlign=3Dtop align=3Dleft width=3D160>
      <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D143 border=3D0>
        <TBODY>
        <TR>
          <TD><IMG height=3D80=20
            src=3D"cid:19d701c4ef4b$e4fce0a0$c80aa8c0@EXAG.LOCAL" =
width=3D143=20
            vspace=3D8></TD></TR>
        <TR>
          <TD><A href= =
target=3D_blank><IMG=20
            height=3D11 =
src=3D"cid:19d801c4ef4b$e4fce0a0$c80aa8c0@EXAG.LOCAL"=20
            width=3D143 border=3D0></A></TD></TR>
        <TR>
          <TD><IMG height=3D125=20
            src=3D"cid:19d901c4ef4b$e4fce0a0$c80aa8c0@EXAG.LOCAL"=20
        width=3D143></TD></TR></TBODY></TABLE></TD>
    <TD vAlign=3Dtop align=3Dleft><FONT face=3D"Arial, Helvetica, =
sans-serif"=20
      size=3D2>&nbsp;=20
      <DIV align=3Dcenter><FONT face=3D"Arial, Helvetica, =
sans-serif"><FONT=20
      size=3D2><STRONG><FONT color=3D#000080>....::&nbsp;&nbsp; =
MEILLEURS VOEUX 2005=20
      !&nbsp;&nbsp; ::....</FONT></STRONG><BR></FONT><BR><FONT =
size=3D2><FONT=20
      color=3D#000080>
      <D
color=3D#000080>.........................................................=
.....</FONT><B
 
------=_NextPart_001_19DB_01C4EF54.46CA7060--
de ce message j' aimerai récupérer ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
 
          =20
          =20
          =20
      =20
      ....::   MEILLEURS VOEUX 2005 !   ::....
 
      L'=E9quipe  vous pr=E9sente
      tous ses voeux de bonheur et de prosp=E9rit=E9
      au seuil de l'ann=E9e nouvelle...
 
 
      ..............................................................
 
 
 
      Cliquez sur le lien ci-dessous pour acc=E8der =E0 notre carte de =
voeux
      [  ]=20
or , avec l utilisation de cette expression régulière :
Code :
eregi("Content-Type: text/plain;(.*)------=_NextPart",$message,$res)
, le "Content-Type: text/plain;" est bien enlevé mais , l expression reguliere ne s' arrete pas au premier "------=_NextPart", qu elle trouve par la suite , mais au dernier contenu dans le sting ...


ca donne ca :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
val : 
    charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
 
          =20
          =20
          =20
      =20
      ....::   MEILLEURS VOEUX 2005 !   ::....
 
      L'=E9quipe d' vous pr=E9sente
      tous ses voeux de bonheur et de prosp=E9rit=E9
      au seuil de l'ann=E9e nouvelle...
 
 
      ..............................................................
 
 
 
      Cliquez sur le lien ci-dessous pour acc=E8der =E0 notre carte de =
voeux
      [  ]=20
 
------=_NextPart_001_19DB_01C4EF54.46CA7060
Content-Type: text/html;
    charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2800.1479" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><BASE=20
href=3D"file://C:\Program Files\Fichiers communs\Microsoft Shared\Papier =
=E0 lettres\">
<TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"99%" border=3D0>
  <TBODY>
  <TR>
    <TD vAlign=3Dtop align=3Dleft width=3D160>
      <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D143 border=3D0>
        <TBODY>
        <TR>
          <TD><IMG height=3D80=20
            src=3D"cid:19d701c4ef4b$e4fce0a0$c80aa8c0@EXAG.LOCAL" =
width=3D143=20
            vspace=3D8></TD></TR>
 
            height=3D11 =
src=3D"cid:19d801c4ef4b$e4fce0a0$c80aa8c0@EXAG.LOCAL"=20
            width=3D143 border=3D0></A></TD></TR>
        <TR>
 
      color=3D#000080>&nbsp;]</FONT></DIV></FONT></FONT></FONT><FONT=20
      =
color=3D#000080></DIV></FONT></FONT></FONT></FONT></DIV></FONT></FONT></T=
D></TR></TBODY></TABLE></DIV></BODY></HTML>

je sais pas comment faire pour récupérer les infos que je couhaite, car apparement eregi() ne s' arrete pas au premier "------=_NextPart" rencontré mais au dernier :s


est ce que quelqu un aurait une idée?
acado est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2006, 21h42   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Oui : oublie les fonctions ereg et utilise les preg
Code :
preg_match('#Content-Type: text/plain;(.*)------=_NextPart#Usi', $message, $match);
Au passage, les caractères "Usi" sont des modificateurs (l'un des avantages des PCRE par rapport aux expressions POSIX). Fais une recherche sur "greedy", "ungreedy" ou "avare" dans mes messages, je pense que tu trouveras l'explication.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2006, 09h12   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 44
Points : 13
Points : 13
merci ca marche bien , j vais regarder pour les caractères "Usi".
acado est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2006, 09h37   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 44
Points : 13
Points : 13
maintenant je récupère bien ce que je veux mais maintenant je voudrais pouvoir enlever des informations et en sauvegarder qques une , comme le charset par exemple et recuperer le message suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
   =20
          =20
          =20
      =20
      ....::   MEILLEURS VOEUX 2005 !   ::....
 
      L'=E9quipe  vous pr=E9sente
      tous ses voeux de bonheur et de prosp=E9rit=E9
      au seuil de l'ann=E9e nouvelle...
 
 
      ..............................................................
 
 
 
      Cliquez sur le lien ci-dessous pour acc=E8der =E0 notre carte de =
voeux
      [  ]=20
.

Ma question est comment puis-je parcourir ligne par ligne le message précédent ou transformer le resultat de l' expression réguliere en un tableau ou chaque case contient une ligne?


Merci d'avance.
acado est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2006, 15h47   #5
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 44
Points : 13
Points : 13
j ai résolu merci kd mm
acado est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h25.


 
 
 
 
Partenaires

Hébergement Web