Récupérer ce qu'il y a entre parenthèses grâces aux expressions régulières

Eléphant du PHP | 246 Messages

30 nov. 2007, 01:40

Salut à tous. J'ai des chaînes qui contiennent des parenthèses. Mon but serait de récupérer dans une variable la chaîne sans la parenthèse, et dans une autre, la parenthèse ainsi que son contenu. Exemple :

Code : Tout sélectionner

Bla bla bla (USA) Blô Blô Blô (EU) Bli Bli Bli (JP) Ki Kou Lol (FR)
Ce qui me donnerait :

Code : Tout sélectionner

Bla bla bla (USA) Blô Blô Blô (EU) Bli Bli Bli (JP) Ki Kou Lol (FR)
Pendant que j'écrivais ce message je cherchais encore comment faire. Puis j'ai fini par trouvé une méthode artificiel qui marche très bien, mais je doute que c'est comme ça qu'il faut faire en réalité ^^
$Nom = split('\(.*\)','Bla Bla Bla (USA)');
$Nom = trim($Nom[0]);

$Parenthese = split($Nom,'Bla Bla Bla (USA)');
$Parenthese = trim($Parenthese[1]);
Alors pendant que j'y suis, comment faudrait-il faire normalement ?

Et autre question, pendant que je testais, je voulais mettre [:alnum:] au lieu de .*? mais rien ce se passait. J'ai du mal à comprendre pourquoi ?

Merci d'avance !

Mammouth du PHP | 1885 Messages

30 nov. 2007, 04:03

<?php
$data = 'Bla bla bla (USA)
Blô Blô Blô (EU)
Bli Bli Bli (JP)
Ki Kou Lol (FR)';

preg_match_all('/(.*?) \(([A-Z]+)\)/', $data, $matches, PREG_SET_ORDER);
print_r($matches);
?>

Code : Tout sélectionner

Array ( [0] => Array ( [0] => Bla bla bla (USA) [1] => Bla bla bla [2] => USA ) [1] => Array ( [0] => Blô Blô Blô (EU) [1] => Blô Blô Blô [2] => EU ) [2] => Array ( [0] => Bli Bli Bli (JP) [1] => Bli Bli Bli [2] => JP ) [3] => Array ( [0] => Ki Kou Lol (FR) [1] => Ki Kou Lol [2] => FR ) )
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Eléphanteau du PHP | 30 Messages

30 nov. 2007, 19:54

Je m'incruste un peu dans le sujet, mais j'ai fais quelques tests et recherches et je me demande à quoi servent les / (en début et en fin).
Avec Google, j'ai trouvé la signification de \ et de | mais pas du /

/(.*?) \(([A-Z]+)\)/

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 nov. 2007, 20:44

Ce sont juste les délimiteurs de l'expression régulière

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 246 Messages

02 déc. 2007, 13:58

Merci je regarderai ça.

Edit : Merci 4a marche bien!