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 27/10/2011, 09h29   #1
Membre du Club
 
Inscription : mars 2003
Messages : 185
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 185
Points : 54
Points : 54
Par défaut Extraction valeur dans un tableau

Bonjour,

Je viens solliciter un peu d'aider auprès de vous car la je deviens dingue le REGEX une chose pas évidente du tout...

Je possède la chaine suivante :

Code :
width: 93px; height: 70px; float: left; margin: 5px;
Je souhaiterais effectuer une extraction de cette chaine en tableau afin d'obtenir :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
            [0] => Array
                (
                    [0] => width: 93px
                    [1] => height: 70px
                    [2] => float: left
                    [3] => margin: 5px                    
                )
 
            [1] => Array
                (
                    [0] => width
                    [1] => height
                    [2] => float
                    [3] => margin    
                )
            [2] => Array
                (
                    [0] => 93
                    [1] => 70
                    [2] => left
                    [3] => 5    
                )
J'effectue "36" tests sans trop savoir vers où je vais.

Voici un exemple ( qui ne fonctionne pas ):

Code :
preg_match_all('/(width|height|float):([^"]:*px;)/i', $style, $out);
Je vous remercie d'avance pour votre aide et coup de pouce.
Cordialement
Kilian
kilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 09h38   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
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 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
Salut,

Y a plus simple que le regex pour le 1er tableau :
Code :
1
2
3
4
5
6
<?php
 
$a = 'width: 93px; height: 70px; float: left; margin: 5px;';
$b = explode(';', $a);
 
?>
__________________
# 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 27/10/2011, 09h49   #3
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
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 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
Allez je te file la soluce sans les regex :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
$a = 'width: 93px; height: 70px; float: left; margin: 5px;';
$b = explode(';', $a);
$c[0] = $b;
 
$cut = function($v) use (&$c) {
   $parts = explode(':', $v);
   $c[1][] = trim($parts[0]);
   $c[2][] = trim($parts[1]);
};
 
array_map($cut, $b);
 
// $c correspond à ton tableau final
 
?>
__________________
# 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 27/10/2011, 09h56   #4
Membre du Club
 
Inscription : mars 2003
Messages : 185
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 185
Points : 54
Points : 54
Wouaww ta fonction... Certaine fonction comme le "array_map" je ne connais pas du tout...
En tout cas je vais lire ta proposition attentivement, essayer de la comprendre...
Je te remercie beaucoup pour ton aide.
A+
Kilian
kilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 10h09   #5
Membre du Club
 
Inscription : mars 2003
Messages : 185
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 185
Points : 54
Points : 54
J'ai bien compris ta façon de faire, là on voit bien la différence entre un développeur pro et un "du dimanche" hihi...

Merci beaucoup pour ton aide
kilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 15h21   #6
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Bonjour,

Personnellement, je trouve ça aussi lisible en regex :

Code :
1
2
3
4
5
<?php
$str = 'width: 93px; height: 70px; float: left; margin: 5px;';
$pattern = '/([^;]+): ([^;]+)/';
preg_match_all($pattern, $str, $m);
var_dump($m);
__________________
  • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
  • Merci d'utiliser les balises de code (# dans l'éditeur)
  • Si votre problème est réglé, merci d'utiliser le bouton
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 10h18   #7
Membre du Club
 
Inscription : mars 2003
Messages : 185
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 185
Points : 54
Points : 54
Cool merci comme cela j'ai 2 méthodes...
Un gros merci à vous, à cet ambiance...
L'informatique un monde d’échange...
Merci
kilian 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 05h36.


 
 
 
 
Partenaires

Hébergement Web