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 08/02/2012, 22h44   #1
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
Par défaut Un peu perdu

Bonsoir à tous, j'ai un regex qui doit faire ceci :
Prendre un texte qui peut contenir "...{blabla|blibli|bloblo|...}..." et me sortir chque chaine situé dans {...} et séparée par "|“ soit dans cet exemple : blabla, blibli, bloblo ...

J'ai ce regex mais il ne sors que "tous les élements moin le derneir" et le dernier.

Code x :
#([^\}\{]*)\|([^\}\{\|]*)[\|]?([^\}\{\|]*)#i

Quelqu'un peut m'aider. j'ai le cerveau qui ne veut plus comprendre

merci d'avancE.
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 22h54   #2
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
pourquoi pas un explode('|',$chaine) ?
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 23h02   #3
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 554
Points : 2 554
Envoyer un message via Skype™ à rawsrc
Bonsoir
et en utf8, il faut utiliser mb_split()
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 10h03   #4
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
Bonjour,

Si j'ai un texte comme celui-ci :
Citation:
Nullam sed porta dolor. Mauris condimentum metus sed nisl malesuada ac pretium nulla semper. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum mollis massa id tellus sodales sagittis. Cras varius tempor rutrum. {Fusce tellus quam|vestibulum non varius|nec, laoreet at erat}. Nunc sed turpis a lacus gravida commodo sit amet nec magna. Suspendisse hendrerit ornare velit, faucibus cursus neque imperdiet non. Ut luctus tristique pretium. {Fusce libero libero,|faucibus ut suscipit et,|interdum et elit}. Mauris eleifend sagittis lorem et feugiat. Proin pellentesque lacinia elit, sit amet ullamcorper leo vehicula eu.
Le split et le explode me semble bien moins approprié qu'un regex, non ?
Tchinkatchuk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 12h12   #5
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 678
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 678
Points : 5 425
Points : 5 425
Le plus simple est peut-être de combiner les deux :
Code :
1
2
3
4
5
6
7
8
9
$texte = 'Nullam sed porta dolor. Mauris condimentum metus sed nisl malesuada ac pretium nulla semper. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum mollis massa id tellus sodales sagittis. Cras varius tempor rutrum. {Fusce tellus quam|vestibulum non varius|nec, laoreet at erat}. Nunc sed turpis a lacus gravida commodo sit amet nec magna. Suspendisse hendrerit ornare velit, faucibus cursus neque imperdiet non. Ut luctus tristique pretium. {Fusce libero libero,|faucibus ut suscipit et,|interdum et elit}. Mauris eleifend sagittis lorem et feugiat. Proin pellentesque lacinia elit, sit amet ullamcorper leo vehicula eu. ';
$pattern = '#\{([^}]*)\}#i';
$result = preg_match_all($pattern, $texte, $matches);
$mots = array();
if ($result) {
    foreach($matches[1] as $match) {
        array_push($mots, explode('|', $match));
    }
}
retourne dans $mots :
Array
(
    [0] => Array
        (
            [0] => Fusce tellus quam
            [1] => vestibulum non varius
            [2] => nec, laoreet at erat
        )

    [1] => Array
        (
            [0] => Fusce libero libero,
            [1] => faucibus ut suscipit et,
            [2] => interdum et elit
        )

)
Ce n'est pas forcément très optimisé, mais bon...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 11h39   #6
Membre habitué
 
Avatar de Tchinkatchuk
 
Homme Sylvain Gourvil
Freelance en développement Web
Inscription : mars 2005
Messages : 248
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Gourvil
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Freelance en développement Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2005
Messages : 248
Points : 141
Points : 141
Je ne voulais pas à la base mais j'ai choisi cette solution

Merci beaucoup pour votre aide !
Tchinkatchuk 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 01h55.


 
 
 
 
Partenaires

Hébergement Web