[PHP][formattage de texte]
Résolu/Fermé
A voir également:
- [PHP][formattage de texte]
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Excel cellule couleur si condition texte - Guide
- Transcription audio en texte word gratuit - Guide
- Easy php - Télécharger - Divers Web & Internet
- Convertisseur récupération de texte - Guide
7 réponses
Heu.. c'est lorsque on arrête 5 mins qu'on commence à voire certaine choses qu'on a sous les yeux depuis des heures, Il y a aussi les ,C, qui peuvent servir de délimiteur avec peut-être une logique du genre " tant que ,C, est trouvée concatène la ligne entière avec la précédente ainsi de suite jusqu'a ce qu'il n'y ai plus de ,C, puis reprend l'execution normale du script".. pêut-être une piste.
Toujours pas de solution qui marche pour joindre les lignes ensembles, mais j'avance un peu dans d'autre partie.
// segmentation $result4=preg_replace('/\s{2,}/', ' ', $result3); // on vire les espaces $data = explode(",",$result4); // on segmente for ($i = 6; $i <= 9; $i++) { $findme = 'VT,411000,'; $pos = strpos($result4,$findme); if ($pos === false) { echo $data[$i+2].","; // juste un affichage echo $data[$i+1].","; echo $data[$i+3].","; fputs($FicSortie,$data[$i+2].",", 4096); // on écrit dans le fichier de sortie fputs($FicSortie,$data[$i+1].",", 4096); fputs($FicSortie,$data[$i+3].",", 4096); } else { echo $data[$i+3].","; echo $data[$i].","; echo $data[$i-2].","; echo $data[$i+2].","; echo $data[$i+1].","; fputs($FicSortie,$data[$i+3].",", 4096); fputs($FicSortie,$data[$i].",", 4096); fputs($FicSortie,$data[$i-2].",", 4096); fputs($FicSortie,$data[$i+2].",", 4096); fputs($FicSortie,$data[$i+1].",", 4096); } $i=9; echo"<br>"; fputs($FicSortie,"\n", 4096); }
plus propre, et surtout j'ai pigé le . pour de bon
echo $data[$i+2].",".$data[$i+1].",".$data[$i+3].","; // juste un affichage fputs($FicSortie,$data[$i+2].",".$data[$i+1].",".$data[$i+3].",",4096); // on écrit } else { echo $data[$i+3].",".$data[$i].",".$data[$i-2].",".$data[$i+2].",".$data[$i+1].","; fputs($FicSortie,$data[$i+3].",".$data[$i].",".$data[$i-2].",".$data[$i+2].",".$data[$i+1].",", 4096); }
Sinon en passant par le shell avec sed ou awk directement à partir du txt généré, sinon je vois pas comment joindre des lignes en php,je trouve un tas de ressources sur le net mais aucune ne fait l'affaire.
sos ?
sos ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir,
j'ai remarqué que toutes tes lignes que tu dois garder au debut du futur fichier sortie commencent par 081207, les autres commencent par une lettre.
Même si cette date change, on peut tester si ligne commence par 6 chiffres.
Alors inspires toi de ça:
j'ai remarqué que toutes tes lignes que tu dois garder au debut du futur fichier sortie commencent par 081207, les autres commencent par une lettre.
Même si cette date change, on peut tester si ligne commence par 6 chiffres.
Alors inspires toi de ça:
$array_fichierE=file('fichier.txt');// on lit le fichier et il est mis dans un array (tableau) ligne par ligne $RE="#^[0-9]{6}$#";// definition de la regle pour tester 081207 par exemple ( 6 chiffres et seulement 6) $num=-1; //init du compteur index ligne fichier final a -1 car au premier coup on rajoutera 1 donc => 0 $array_fichierS=array(); // init nom fichier sortie foreach($array_fichierE as $ligne){ $array_ligne=explode("'",$ligne); // on eclate la ligne dans un array //on teste si commence par 6 chiffres if (preg_match($RE,$array_ligne[0])){ // si le premier element est un nombre de 6 chiffres $num++; //on incremente le numero future ligne seulement dans ce cas $chaine_ligne=implode(",",$array_ligne); //on remet la ligne comme avant $array_fichierS[$num]=$chaine_ligne }else{ // si le premier element n'est pas un nombre de 6 chiffres $chaine_ligne=implode(",",$array_ligne); //on remet la ligne comme avant $array_fichierS[$num].=",";//on rajoute une virgule entre $array_fichierS[$num].=$chaine_ligne; //on empile à la suite } } $FicSortie = fopen($name_file_export, "w+"); // on ecrit le fichier sortie ligne par ligne foreach($array_fichierS as $ligne){ fputs($FicSortie,$ligne); } fclose();
Merci pour la réponse, vraiment !
J'ai trouvé une méthode, bête et bourrin, mais bon ça marche.. cela ne va pas m'empecher d'essayer la tienne qui semble nettement plus propre ;-)
J'ai trouvé une méthode, bête et bourrin, mais bon ça marche.. cela ne va pas m'empecher d'essayer la tienne qui semble nettement plus propre ;-)
for ($i = 6; $i <= 9; $i++) { $findme = 'VT,411000,'; $pos = strpos($result4,$findme); if ($pos === false) { $c=$c+1; $sortie=$data[$i+2].",".$data[$i+1].",".$data[$i+3].","; echo $sortie; // juste un affichage fputs($FicSortie,$sortie,4096); // on écrit } else { if ($c===4){echo "<br>";fputs($FicSortie,"\n", 4096);} elseif ($c===3){echo "<br>";fputs($FicSortie,"\n", 4096);} elseif ($c===2){echo "<br>";fputs($FicSortie,"\n", 4096);} $c=0; $sortie2=$data[$i+3].",".$data[$i].",".$data[$i-2].",".$data[$i+2].",".$data[$i+1].","; $temp=preg_replace("/(\r\n|\n|\r)/", " ", $sortie2); echo $temp; fputs($FicSortie,$temp, 4096); } $i=9; } }
j'ai oublié de commenter =/.
J'ai effectivement joué avec un incrément mais sur les ,C, en début de ligne puis envoyer un retour à la ligne en fonction du compteur. je l'ai pas tourné dans tout les sens mais ça marche jusqu'a 4, si un jour une 5ième ligne viens jouer les troubles fêtes il va falloir modifier le code. Ce à quoi la solution d'Alain42 ne semble pas vulnérable, et c'est trés judicieux d'avoir remarqué pour la date.C'était sous mon nez depuis trop de temps surement pour que je le vois ;-)
Objectif présent : virer mon code tout pourri et utiliser celui d'Alain42
J'ai effectivement joué avec un incrément mais sur les ,C, en début de ligne puis envoyer un retour à la ligne en fonction du compteur. je l'ai pas tourné dans tout les sens mais ça marche jusqu'a 4, si un jour une 5ième ligne viens jouer les troubles fêtes il va falloir modifier le code. Ce à quoi la solution d'Alain42 ne semble pas vulnérable, et c'est trés judicieux d'avoir remarqué pour la date.C'était sous mon nez depuis trop de temps surement pour que je le vois ;-)
Objectif présent : virer mon code tout pourri et utiliser celui d'Alain42