JeuWeb - Crée ton jeu par navigateur
Problème avec une REGEX et un Array - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Problème avec une REGEX et un Array (/showthread.php?tid=1170)



Problème avec une REGEX et un Array - Lahiel - 25-03-2008

Bonjour a tous,

j'ai un petit problème que je n'arrive pas a réglé.

Je code un script lier a un jeu, je me permet donc de placer mon sujet ici ou je trouverais surement quelqu'un de compétant pour m'aider !

J'ai donc une regex qui me découpe mon texte en un array multidimensionnels (normal jusque là !)

Je parcours le tableau a l'aide de 3 boucle foreach, afin d'obtenir les information désiré.

J'aimerais inclure ces info dans la BDD, et c'est la que je bloque...

Voici mon code :
Code PHP :
<?php

$sChaine
= "17/03 (21:33) Secteur Portuaire - Centre Ferroviaire : Bhaboum a produit 6 Voyages en Train et touché 90 P$.
17/03 (21:26) Secteur Portuaire - Mine d'Or : Bhaboum a produit 1 Or et touché 69 P$.
17/03 (21:26) Secteur Portuaire - Mine d'Or : Bhaboum a produit 2 Or et touché 168 P$."
;
preg_match_all('`- ([^:]+)|a produit ([0-9]+)|([0-9]+) P\$`', $sChaine, $a);//$aRes



foreach($a[1] as $do2)
{

$doimpl1 = $do2."-";
echo
$doimpl1;

}

echo
"<br /><hr /><br />";

foreach(
$a[2] as $do2)
{

$doimpl2 = $do2."-";
echo
$doimpl2;

}
echo
"<br /><hr /><br />";
foreach(
$a[3] as $do2)
{

$doimpl3 = $do2."-";
echo
$doimpl3;
}
?>


ce qui donne ce résultat:

Citation :Centre Ferroviaire ---Mine d'Or ---Mine d'Or ---

-6---1---2--

--90---69---168-


j'aimerais inclure dans ma bdd chaque information dans l'ordre (centre ferroviaire, 6, 90 et ainsi de suite...)

et je bloque a ce niveau, comment mettre mes informations dans l'ordre dans ma BDD ?

j'ai bien penser a récupéré l'id mais comme mon texte est dynamique je ne vois pas trop comment faire.

Merci d'avance !

Bonne soirée

EDIT : rajout d'un retour a la ligne dans mon texte pour pas déformer le forum


RE: Problème avec une REGEX et un Array - denisc - 25-03-2008

A priori le preg découpe correctement les données... Essaie ceci:
Code PHP :
<?php 
for($i=0;$i<count($a[1]);$i++)
{

$doimpl1 = $a[1][$i]."-";
$doimpl2 = $a[2][$i]."-";
$doimpl3 = $a[3][$i]."-";
echo
$doimpl1.$doimpl2.$doimpl3;

}



RE: Problème avec une REGEX et un Array - Lahiel - 25-03-2008

Merci !

il y a déjà du mieux, mais ca déconne encore

[Image: defbdd.png]

y a t'il une solution ?

Merci d'avance !


RE: Problème avec une REGEX et un Array - Sephi-Chan - 25-03-2008

Je ne vais pas répondre à ta question (désolé), mais pourquoi utilises-tu une chaîne de caractères que tu découpes ? A en voir sa forme, cette chaîne semble être faite dynamiquement, alors pourquoi dès ce moment là ne pas stocker chaque morceau dans un fichier (XML par exemple) ou dans un fichier texte au format JSON.

Code PHP :
<?php 
$str
= '
[
{
"centre": "Centre Ferroviaire",
"quantite": "2",
"date": "2008-03-17 21:33:00"
},
{
"centre": "Mine d\'Or",
"quantite": "7",
"date": "2008-03-17 21:26:00"
}
]
'
;

Qui te sort un tableau facilement utilisable après application de la fonction json_decode($str, true) :
Code :
Array
(
    [0] => Array
        (
            [centre] => Centre Ferroviaire
            [quantite] => 2
            [date] => 2008-03-17 21:33:00
        )

    [1] => Array
        (
            [centre] => Mine d'Or
            [quantite] => 7
            [date] => 2008-03-17 21:26:00
        )
)

Voilà, voilà, j'espère donc que tu opteras pour une solution de ce genre, un peu moins bancale. Smile


Sephi-Chan


RE: Problème avec une REGEX et un Array - Ziliev - 25-03-2008

Un p'tit print_r($a) et on comprend tout de suite:

Code PHP :
<?php 
Array
(
[
0] => Array
(
[
0] => - Centre Ferroviaire
[1] => a produit 6
[2] => 90 P$
[
3] => - Mine d'Or
[4] => a produit 1
[5] => 69 P$
[6] => - Mine d'
Or
[
7] => a produit 2
[8] => 168 P$
)

[
1] => Array
(
[
0] => Centre Ferroviaire
[1] =>
[
2] =>
[
3] => Mine d'Or
[4] =>
[5] =>
[6] => Mine d'
Or
[
7] =>
[
8] =>
)

[
2] => Array
(
[
0] =>
[
1] => 6
[2] =>
[
3] =>
[
4] => 1
[5] =>
[
6] =>
[
7] => 2
[8] =>
)

[
3] => Array
(
[
0] =>
[
1] =>
[
2] => 90
[3] =>
[
4] =>
[
5] => 69
[6] =>
[
7] =>
[
8] => 168
)
)

Dans chaque parenthèse capturante (premier index) il met un index par résultat, quel que soit la parenthèse qui a capturé, d'ou tout ces vides. Mieux vaut pour toi utiliser les résultats globaux dans 0 en faisant un cycle qui avance de 3 en 3, ou alors incrémenter les 2 index à la fois dans ta boucle (j'suis aps sur d'tere très clair dans mes explications mais je pense que tu va trouver la solution par toi même, au pire j'te ferais un exemple). C'est vrai qu'habituellement on passe plutot de la BDD au texte m'enfin le client est roi hein ^^


RE: Problème avec une REGEX et un Array - Lahiel - 25-03-2008

Sephi-chan:
Je ne suis pas l'auteur du jeu Wink

je me contente simplement de reprendre les information pour faire un rapport détaillé (je code un script de calcul en quelque sorte, il aide a la gestion d'une ville)
l'utilisateur copie/colle sont rapport d'événement et je doit en sortir tout un cas de calcul et statistique détaillés !

Sinon j'aurais bien évidement choisit ta solution Smile