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 04/02/2007, 17h27   #1
Invité régulier
 
Étudiant
Inscription : février 2007
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 10
Points : 5
Points : 5
Par défaut Extraire du texte situé entre deux séparateurs différents

Bonjour,
Pour extraire certaines parties d'un code, j'aimerai pouvoir récupérer des morceaux de texte qui se situent entre deux séparateurs.

Un exempe, mon fichier serait comme suit :

xxxxxxxxxxxxxxxxxx
xxxxxxxxx
/begin
xxxxxxxxxxxx
/end
xxx
xxxxxx

Comment est-il possible de récupérer la partie située entre /begin et /end ?

Merci d'avance pour votre réponse.
Marco33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2007, 20h23   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 570
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 570
Points : 2 506
Points : 2 506
Salut, tu peux utiliser ce code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$subject = 'xxxxxxxxxxxxxxxxxx
xxxxxxxxx
/begin
le texte
à extraire
/end
xxx
xxxxxx';
$pattern = '`/begin(.*)/end`is';
preg_match($pattern, $subject, $matches);
echo $matches[1];
?>
Bon développement
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 17h27   #3
Invité régulier
 
Étudiant
Inscription : février 2007
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 10
Points : 5
Points : 5
Merci pour ta réponse

Je viens d'essayer avec des séparateurs "simples" et ça marche nickel.

Par contre, j'aurai besoin de l'utiliser aussi avec "\title{" comme balise de début et "}" comme balise de fin, et ça m'a pas l'air de marcher.

Si tu (ou quelqu'un d'autre) vois une modification à apporter au code, ça me serait d'un grand secours.
Marco33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 19h11   #4
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 570
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 570
Points : 2 506
Points : 2 506
Salut, je viens d'essayer ce code est ça marche
Code :
1
2
3
4
5
6
7
8
9
<?php
$subject = 'xxxxxxxxxxxxxxxxxx
xxxxxxxxx
\title{le texte à extraire}
xxx xxxxxx';
$pattern = '`title{(.*)}`is';
preg_match($pattern, $subject, $matches);
echo $matches[1];
?>
Qu'est-ce que tu veux dire par ça m'a pas l'air de marcher ?
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 20h11   #5
Invité régulier
 
Étudiant
Inscription : février 2007
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 10
Points : 5
Points : 5
Ca ne marchait pas parce que je prenait "\title{" comme balise de début, alors que "title{" suffit.

Merci bien maintenant ça marche nickel
Marco33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 20h34   #6
Invité régulier
 
Étudiant
Inscription : février 2007
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 10
Points : 5
Points : 5
Erf, voilà que j'ai encore un problème...

Maintenant j'ai une chaine de caractères comme suit :

xxxxxxxxx
xxxxxxxxx
\title{ titre }
\author{ auteur }
xxxxx
xxxxxxx

Comme il trouve plusieurs accolades fermantes, il prend en compte la dernière...
Comment faire pour qu'il utilise la première qu'il voit ?

Merci beaucoup pour ton aide.

Tant que j'y suis, tu sais ou je pourrais trouver une doc assez complète sur preg_match() ? Parce que j'ai l'impression qu'il n'y a pas grand chose dans celle du manuel php, et si ça continue j'ai pas fini de te poser des questions...
Marco33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2007, 21h08   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Il faut utiliser l'option (flag) de non gourmandise U (en fin d'expression régulière), en modifiant le code de Nesmoutou :
Code :
$pattern = '`title{(.*)}`isU';
Les expressions régulières sont, par défaut, gourmandes en PHP. Il faut comprendre par là, que PHP cherchera à établir la correspondance sur la partie la plus longue possible de la chaîne sujet.

Pour ce qui est des liens :

Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 18h20   #8
Invité régulier
 
Étudiant
Inscription : février 2007
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 10
Points : 5
Points : 5
Merci à vous deux, maintenant tout marche nickel !
Marco33 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 20h41.


 
 
 
 
Partenaires

Hébergement Web