Transformation de tableau

Résolu
abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012 - 9 juin 2007 à 19:25
abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012 - 10 juin 2007 à 16:51
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

DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
9 juin 2007 à 21:16
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.
3
abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012
10 juin 2007 à 16:51
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 ...
3