Transformation de tableau

Résolu
Signaler
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012
-
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012
-
Bonjour,

Voici un tableau au format texte que je récupère dans un variable:

titre1             titre2             titre3             titre4
champs1       champs2        champs3       champs4
sdffd             ffsfsds            ghghffhggf   fdgfgf
hfg                dfgfgdggg     champs3       champs4
champs1       champs2        champs3       champs4

Je voudrai le tranformer en:

titre1, titre2, titre3, titre4,
----
champs1, champs2, champs3, champs4,
----
sdffd, ffsfsds, ghghffhggf, fdgfgf,
----
hfg, dfgfgdggg, champs3, champs4,
----
champs1, champs2, champs3, champs4

Je pense que pour le faire la meilleur solution est les expressions régulières mais j'avou que c'est pas trop mon truc. Donc si quelqu'un peut m'aider?

Have Fun ...

2 réponses

Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
Hello,

non pas de regex dans ton cas, une simple lecture du fichier, exemple :

<?php

$file = 'fichier.txt';
$hFile = fopen($file, 'r');
while (!feof($hFile)) {
  $line = fgets($hFile, 2048);
  $data = explode($line, \"\t\");  // explosion de la chaine grâce au caractère de tabulation '\'t'
  echo '----
'.$data[0].' |

Vérifications à implémenter.
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

En faite le tableau n'est pas contenu dans un fichier texte mais reçu par un socket dans une variable. Les espacement entre les éléments sont des esapces. Voici la solution avec les expressions régulière qui n'était pas si compliqué:

    function tablo($data)
    {
        $enregistrement_recup = preg_split("/[\r\n]+/", $data);

        for ($i = 0; $i < (sizeof($enregistrement_recup)-3); $i++)
        {
            $champ_recup = preg_split("/[\s]+/", $enregistrement_recup[$i]);           
            $enregistrement_recup[$i] = array();

            for ($n = 0; $n < count($champ_recup); $n++)
                $enregistrement_recup[$i][$n]=$champ_recup[$n];
        }
       
        return $enregistrement_recup;
    }

Cette fonction me retourne les éléments dans un tableau sous forme de variable array.
Après j'utilise ce tableau comme bon me semble, par exemple:

        echo "\";
        echo \"\";
        for ($n = 0; $n < 4; $n++)
            echo \"" . $enregistrement_recup[0][$n] . ", \";
        echo \"\";       
        for ($i = 1; $i < (sizeof($enregistrement_recup)-3); $i++)
        {
            echo \"----
\";
            for ($n = 0; $n < 4; $n++)
                echo \"" . $enregistrement_recup[$i][$n] . ", \";
            echo \"\";
        }
        echo "
";

Voilà :d

Have Fun ...