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/05/2006, 08h57   #1
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 111
Points : 30
Points : 30
Par défaut Expression régulière avec preg_match_all

salut,
il y a un moment j'avais deja posté une question sur les expression régulière. J'avais réussi a avoir ce que je pensais bon, mais je me suis apercu qu'il fallait légèrerement modifier l'expression régulière.Et la c'est le drame, ca ne marche pas alors qu'il devrait retrouver cette expression regulière. je montre :
voici l'expression du debut qui marche:
Code :
1
2
 
preg_match_all('/\\\\trowd(.*)'.$string.'[1-3](.*)\\\\row }/sU',$texte,$test)
et le resultat était :
\trowd [........] {\fs18 REFDOC2\cell VERS2\cell }[........] \cellx9639\row }
maintenant je veux match avec la meme chose en ajoutatnt } au début.
Code :
1
2
3
4
5
6
 
preg_match_all('/}\\\\trowd(.*)'.$string.'[1-3](.*)\\\\row }/sU',$texte,$test)
ou
preg_match_all('/[}]\\\\trowd(.*)'.$string.'[1-3](.*)\\\\row }/sU',$texte,$test)
ou
preg_match_all('/\}\\\\trowd(.*)'.$string.'[1-3](.*)\\\\row }/sU',$texte,$test)
et la c'est le problème ca ne marcha pas alors que j'ai comme texte :

[........]\clftsWidth3\clwWidth1134 \cellx9639\row }\trowd \trgaph70\trleft-70\trkeep\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr[.....]\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 \f1\fs20\lang1036\langfe1036\cgrid\langnp1036\langfenp1036 {\fs18 DOCUMENT2\cell }\pard \s44\qc \li57\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 {\fs18 REFDOC2\cell VERS2\cell }\pard[........]clwWidth1134 \cellx9639\row }

et donc moi je veux que ca me retourne : }\trowd \trgaph70\trleft-70\trkeep\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr[.....]\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 \f1\fs20\lang1036\langfe1036\cgrid\langnp1036\langfenp1036 {\fs18 DOCUMENT2\cell }\pard \s44\qc \li57\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 {\fs18 REFDOC2\cell VERS2\cell }\pard[........]clwWidth1134 \cellx9639\row }

alors si quelqu'un peut m'aider se serait cool .
tit_oune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2006, 09h23   #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

L'accolade est un caractère spécial, il faut donc l'échapper :
Citation:
<?php

$string
= '\clftsWidth3\clwWidth1134 \cellx9639\row }\trowd \trgaph70\trleft-70\trkeep\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr[.....]\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 \f1\fs20\lang1036\langfe1036\cgrid\langnp1036\langfenp1036 {\fs18 DOCUMENT2\cell }\pard \s44\qc \li57\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 {\fs18 REFDOC2\cell VERS2\cell }\pard[........]clwWidth1134 \cellx9639\row }';

if(
preg_match_all('/\}\\\\trowd(.*)\\\\row }/Usi', $string, $matches, PREG_SET_ORDER)){
   foreach(
$matches as $match){
        echo
$match[0].'<br /><br />';
   }
}

?>
Colorez votre code PHP sur les forums grâce à Developpez.com
__________________
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 18/05/2006, 09h31   #3
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 111
Points : 30
Points : 30
oui je sais que l'accolade est un carectere speciaux et comme tu peux le voir c'est le 3eme essais que j'ai fais mais sans succès.
Code :
1
2
 
preg_match_all('/\}\\\\trowd(.*)'.$string.'[1-3](.*)\\\\row }/sU',$texte,$test)
et la je suis bloquer je comprend pas pourkoi ca ne veux pas
tit_oune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2006, 09h59   #4
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 111
Points : 30
Points : 30
je viens d'essayer la solution
[CITATION]
if(preg_match_all('/\}\\\\trowd(.*)\\\\row }/Usi', $string, $matches, PREG_SET_ORDER)){
foreach(
$matches as $match){
echo
$match[0].'<br /><br />';
}
}

[/CITATION]
et ca me retourne en effet un string qui verifie expr reg mais pas la plus petite je pensais que le su permettait de ne pas se preoccupe des caractere d'espacement et de retourner le plus petit string qui verifie l'expression reg
tit_oune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2006, 10h20   #5
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
Flûte, il reste une accolade non échappée à la fin.
C'est le modificateur U qui permet de trouver le plus possible de résultats.

[Edit] Apparemment, puisqu'il n'y a pas d'accolade ouvrante dans la regex, il n'est pas nécessaire d'échapper les 2 accolades fermantes.
Je viens de tester en copiant 5 fois ta chaîne exemple de test : ça fonctionne à merveille.
__________________
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 18/05/2006, 10h54   #6
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 111
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 111
Points : 30
Points : 30
est ce que tu peux me dire si avec la vrai variable a parser tu y arrive parce que chez moi je recupere un truc enorme (en effet il verifie l'expr reg) et pas du tout une petite partie.

et moi je veux juste recuperer :
}\trowd \trgaph70\trleft-70\trkeep\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr\brdrs\brdrw5 \trbrdrh\brdrs\brdrw5 \trbrdrv\brdrs\brdrw5 \trftsWidth1\trpaddl70\trpaddr70\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw45 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6449 \cellx6379\clvertalt\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5 \cltxlrtb\clftsWidth3\clwWidth2126 \cellx8505\clvertalt\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw5 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw45 \cltxlrtb\clftsWidth3\clwWidth1134 \cellx9639\pard\plain \s44\qj \li57\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 \f1\fs20\lang1036\langfe1036\cgrid\langnp1036\langfenp1036 {\fs18 DOCUMENT1\cell }\pard \s44\qc \li57\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin57 {\fs18 REFDOC1\cell VERS1\cell }\pard\plain \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f1\fs22\lang1036\langfe1036\cgrid\langnp1036\langfenp1036 {\fs18 \trowd \trgaph70\trleft-70\trkeep\trbrdrt\brdrs\brdrw5 \trbrdrl\brdrs\brdrw5 \trbrdrb\brdrs\brdrw5 \trbrdrr\brdrs\brdrw5 \trbrdrh\brdrs\brdrw5 \trbrdrv\brdrs\brdrw5 \trftsWidth1\trpaddl70\trpaddr70\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw45 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth6449 \cellx6379\clvertalt\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw5 \clbrdrr\brdrs\brdrw5 \cltxlrtb\clftsWidth3\clwWidth2126 \cellx8505\clvertalt\clbrdrt\brdrs\brdrw30 \clbrdrl\brdrs\brdrw5 \clbrdrb \brdrs\brdrw5 \clbrdrr\brdrs\brdrw45 \cltxlrtb\clftsWidth3\clwWidth1134 \cellx9639\row }

merci pour ton aide
Fichiers attachés
Type de fichier : txt texteRTF.txt (25,8 Ko, 3 affichages)
tit_oune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2006, 23h28   #7
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
Je ne comprends absolument pas ce que tu souhaites récupérer.
De plus, tu ne m'as pas donné le contenu de ta variable $string : c'est pour cela que je l'ai évincée.

Explique-moi ce que tu souhaites faire ou bien donne-moi un lien vers l'ancien sujet, stp. Là, je pars de quelque chose de très bancale. Il me faut davantage d'infos pour t'aider correctement.
__________________
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
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h28.


 
 
 
 
Partenaires

Hébergement Web