[php] Passer d'un ASCII à un ARRAY
Résolu/Fermé
A voir également:
- [php] Passer d'un ASCII à un ARRAY
- Caractère ascii - Guide
- Passer de windows 7 à windows 10 - Accueil - Mise à jour
- Passer de qwerty a azerty - Guide
- Mettre un mot de passe sur un dossier - Guide
- Alert php ✓ - Forum PHP
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
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 ?
Dans ton message tu parles d'ASCCII 9 ! qu'est-ce donc ?
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
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
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
1 févr. 2008 à 13:40
Essaye explode( chr(9), $texteDeDepart )
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
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
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
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>";
}
?>
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>";
}
?>
merci , je vien d'aessayer mais ca me donne rien de concluent, comment je recupere chaque ligne dans un tableau Array ??
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
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.
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.
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
Resource id #576
par contre je ne peut pas te donner le fichier car ce sont des données confidentiel venant de mes clients
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
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 ?
$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 ?
$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>";
}
$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>";
}
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
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" );
Remplace :
$pfichier = fopen ("$nom/bien.TXT","r");
$texteLu = $pfichier;
par :
$texteLu = file_get_contents( "$nom/bien.TXT" );
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 !
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 !
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
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.
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.