Bonjour a tous,

Voila j’essaye de récupérer des info dans un fichier texte et de les mettre dans un tableau pour plus tard les exporter vers sql...

le code est celui si :

<?php
$ouvre=fopen("terrain.txt","r");  
while (!feof ($ouvre))          
    {
$lecture = fgets($ouvre, 8192);
$donnee=explode("],",$lecture); // parsing des données basé sur "],")
$combien=count($donnee)-1; // nbre d'éléments séparés par "],"
echo "<b>Il y a ",$combien," terrain : </b><br><br>";
for ($i=0;$i<$combien;$i++)
    {
$donnee$i]=str_replace(''," ",$donnee$i]);
$donnee$i]=str_replace('"'," ",$donnee$i]);
$donnee$i]=str_replace(':',",",$donnee$i]);
$donnee$i]=str_replace(','," ",$donnee$i]);

  $arResult = array(); 
  $arBuffer = array(); 

  $strData = $donnee$i] or
             die("fichier non trouvé");
echo $strData;  
    $strBuffer = explode(" "," ");

    $nVal1 = $strBuffer[0]; 
    $nVal2 = $strBuffer[1];
    $ncoordone = substr($nVal2, 0, 1); 
    $strBuffer2 = explode(" "," ");
    $nVal3 = $strBuffer2[0];
    $id_joueur = substr($nVal3, 0);
    $strBuffer3 = explode(" "," ");
    $nVal4 = $strBuffer3[0];
    $nVal5 = $strBuffer3[1];
    $ntype = substr($nVal4, 0, 1);

    $arResult"coordonée"] = $ncoordone;
    $arResult"id_joueur"] = $id_joueur;
    $arResult"type"] = $ntype;

      echo "<br>
       <pre>
       coordonnée .. : $ncoordone
       id_joueur ......... : $id_joueur
       type ....... : $ntype
       </pre>\n";
    }
  }

fclose($ouvre);     
?>

à la base ma donnée ressemble a ceci : "541,16":[709056,"Outpost 1",11,10],
après petit traitement : 541 19 709056 Outpost 1 11 10
et au final elle doit s'afficher comme ceci :
coordonnée .. : 541,19
id_joueur ......... : 709056
type ....... : Outpost 1

Mais ça marche pas T_T ( oui si je pose le sujet ces normal ^^ )

Voila si quelqu'un vois d'où ça viens ...

4 réponses


Si ton format direct hors de la base est toujours semblable... pourquoi ne pas utiliser une expression régulière ?

preg_match( '/^"(\d+,\d+)":\(\d+),"(^"]+)",(\d\.]+),(\d\.]+)\]$/', $sFromDB, $aMatches );

Là, dans $aMatches, tu as tout tes paramètres, bien rangés. :)

RooDj
Auteur

je sais pas du tout l'utilisé ces pour ça xD, peu tu me donner un exemple rapide ?

RooDj
Auteur

up?

Ben écoute, l'exemple que j'ai donné là fonctionne si ton format de sortie est toujours semblable.
Tu peux tester la regex en direct ici : http://rubular.com/r/oIdBW5UvKS.
En utilisant l'exemple que je t'ai mis en php, où la variable $sFromDB est ta source (venant d'une base de données ou d'un fichier, qu'importe, mais qui est conforme à ton schéma "541,16":[709056,"Outpost 1",11,10] ; tu auras, dans la variable $aMatches, un tableau qui contiendra les éléments bien séparés comme tu le souhaites.
Ensuite, avec un seul exemple de ton schéma, moi, j'ai extrapolé, mais en fonction de tes données, il faudra pitêt un peu adapter la Regex.