[php] Passer d'un ASCII à un ARRAY

Résolu/Fermé
sebalab - 31 janv. 2008 à 16:20
 sebalab - 4 févr. 2008 à 21:35
Bonjour,

J'ai un gros souci :

j'aimerai passer un texte séparé par des ASCCII 9 en tableau Array


en gros voila ce que j'ai :

texte1 texte2 texte3 texte4 etc.......

je vourait :

$tab[0] = texte1
$tab[2] = texte3
.
.
.

quelqu'un peut m'aider, j'ai deja essayer des expoldes mais j'ai pas réussi.

d'avance merci
A voir également:

14 réponses

croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
31 janv. 2008 à 16:25
Si texte1, texte2, texte3 etc... ne contiennent pas d'espace, $tab = explode( ' ', $texteDeDepart ); doit marcher.

Dans ton message tu parles d'ASCCII 9 ! qu'est-ce donc ?
0
et le probleme c'est qu'il y a des espaces dans mes textes

il ya diférent ASCII

le ASCII 32 qui est un simple espace
le ASCII 9 qui est une tabulation \t
le ASCII 13 qui est une nouvelle ligne \n
le ASCII 10 qui est un retour chariot \r
le ASCII 0 qui est un caractere NULL \0
et le ASCII 11 qui est une tabulation verticale \x0B

sachant que moi c'est un ASCII 9 qui sépart mes texte j'ai bien essayé $tab = explode ('\t',$texteDeDepart),

mais ca n'a pas marché, d'où ce post pour trouver de l'aide

d'avance merci
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
1 févr. 2008 à 13:40
Essaye explode( chr(9), $texteDeDepart )
0
c'est deja mieux mais il y a encore des problemes, je vous explique un peut mieux ce que j'ai trouverez peut etre plus facilement une solution:

c'est un site d'annonces

je recoit un fichier texte avec differentes annonces , chaque annonce est séparé par un code ASCII 13

et dans chaque annonce il y a 29 éléments, séparé eux par un code ASCII 9

pour le traité et le mettre dans ma base de donnée il me faut convertir tout cela

j'aimerai faire une premiere boucle pour extraire chaque annonce, dans cette boucle je recupere les infos de l'annonce et les traite , puis la boucle passe à l'annonce suivante, le fichier se termine ensuite par 2 code ASCII 13

Je vous en demande peut etre beaucoup mais je ne trouve pas la solution

PS: en php

d'avance merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
1 févr. 2008 à 18:26
Essaye le code ci-dessous.

Ensuite :
1. comprends bien coment ça marche
2. ajoute la lecture du fichier en remplacement de $texteLu = qui est mis ici pour test

<?php
//
$texteLu = "annonce 1.1" . chr(9) . "annonce 1.2"
. chr(13)
. "annonce 2.1" . chr(9) . "annonce 2.2" . chr(9) . "annonce 2.3";
$lesAnnonces = explode( chr(13), $texteLu );
//
foreach( $lesAnnonces as $lAnnonce )
{
$lesLignes = explode( chr(9), $lAnnonce );
echo "nouvelle annonce : <br>";
foreach( $lesLignes as $laLigne )
echo "..." . $laLigne . "<br>";
}
?>
0
merci , je vien d'aessayer mais ca me donne rien de concluent, comment je recupere chaque ligne dans un tableau Array ??
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
4 févr. 2008 à 16:41
C'est le premier explode qui récupère les lignes dans un tableau.

Si ça ne marche toujours pas, il faut que tu trouves la source du pb progressivement en commençant par le premier explode.

Je te suggère de placer un var_dump après cet explode. Mon pg test devient alors :

<?php
//
$texteLu = "annonce 1.1" . chr(9) . "annonce 1.2"
. chr(13)
. "annonce 2.1" . chr(9) . "annonce 2.2" . chr(9) . "annonce 2.3";
$lesAnnonces = explode( chr(13), $texteLu );
var_dump( $lesAnnonces );
//
foreach( $lesAnnonces as $lAnnonce )
{
$lesLignes = explode( chr(9), $lAnnonce );
echo "nouvelle annonce : <br>";
foreach( $lesLignes as $laLigne )
echo "..." . $laLigne . "<br>";
}
?>

et son exécution doitfa icher :

array(2) { [0]=> string(23) "annonce 1.1 annonce 1.2" [1]=> string(35) "annonce 2.1 annonce 2.2 annonce 2.3" }

qui montre bien que l'explode a donné un tableau avec les deux lignes.

Si ce n'est pas le cas chez toi examine le contenu de ton texte en entrée (ici $texteLu) qui ne doit pas contenir de chr(13).

Cherche ainsi et tu trouveras, c'est certain.

Pour t'aider d'avantage, j'aurais besoin du script complet ainsi que du fichier en entrée.
0
voila ce que ca me donne:

Resource id #576


par contre je ne peut pas te donner le fichier car ce sont des données confidentiel venant de mes clients
0
ps : ca ne marche pas quand j'inclut mes données, sinon le test fonctione !
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
4 févr. 2008 à 18:22
Qu'est-ce-qui te donne "RessourceId #..." ? Si c'est un echo du résultat de la fonction explode, je pense que tu n''initialises pas correctement ton texte lu car ceci resemble à ce que donne :

$handle = fopen( 'toto.txt', 'r' );
echo $handle;

Après le fopen tu dois faire des appels pour lire le contenu de ton fichier.

Peut-être pourrais-tu m'envoyer la portion de ton script qui fait la lecture proprement dite ?
0
$pfichier = fopen ("$nom/bien.TXT","r");
$texteLu = $pfichier;
$lesAnnonces = explode( chr(13), $texteLu );
var_dump( $lesAnnonces );
//
foreach( $lesAnnonces as $lAnnonce )
{
$lesLignes = explode( chr(9), $lAnnonce );
echo "nouvelle annonce : <br>";
foreach( $lesLignes as $laLigne )
echo "..." . $laLigne . "<br>";
}
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
4 févr. 2008 à 18:38
C'est bien dans ce fragment que ca se passe et l'erreur est patente : tu initialises $texteLu par le résultat de fopen qui est la référence du fichier ouvert et n'est pas son contenu.

Remplace :

$pfichier = fopen ("$nom/bien.TXT","r");
$texteLu = $pfichier;

par :

$texteLu = file_get_contents( "$nom/bien.TXT" );
0
Ok cool merci ca a l'air d'aller maintenant , je pense pouvoir me debrouiller pour le reste de ma page , si jammais j'ai rebesoin, je reviendrai te demander de l'aide, en tout cas grand merci à toi croy

vu que tu a l'air tres callé, aurai tu une idée sur un autre truc :

j'ai dertaine photos qui on un nom du genre 999d_f155_55.jpg ce nom est composé de différent identifiant mais je n'est connait qu'un sur les deux j'ai par exemple f155, comment faire pour exploiter le fichier qui detient ces identifiant ???

il faudrai pouvoir reperer le fichier qui contient f155 mais comment l'utiliser alors que je n'en conait pas le nom entier .

je ne sait pas si je suis tres clair dans mon explication mais j'aurai grandement besoin d'un tel script.

merci a toi si tu peut me repondre, dsl je t'en demande encore !
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
4 févr. 2008 à 20:54
Une simple requête Google "php liste fichiers" trouves plusieurs références dont : https://cyberzoide.developpez.com/php4/file/

qui te donne le script :

<?php
if ($dir = opendir(".")) {
echo "Pointeur: ".$dir."<br>\n";
echo "Chemin: ".getcwd()."<br>\n";
while($file = readdir($dir)) {
echo "$file<br>\n";
}
closedir($dir);
}
?>

qui répondra à ta question après quelques adaptations. N'étant pas là pour faire ton travail, j'attendrai que tu es analysé les adaptations à faire avant de te donner de quoi progresser.
0
je te remerci , je regarderai ca dès que j'aurai un peut de temps , ca vas me metrre sur la voie.

merci de ton aide
0