lupucide Posté 25 Avril 2005 Posté 25 Avril 2005 (modifié) Encore un petit problème avec PHP Un petit exemple vaut mieux qu'un long discours... http://hardcodefr.free.fr/source/ On rentre du PHP, il est enregistré dans un fichier texte et ensuite doit être affiché grâce à fopen + highlight_string. Le hic c'est que j'ai juste une ligne qui s'affiche et je ne trouve pas la méthode pour parcourir le fichier. Actuellement j'utilise ça (donc pas valable) : if (isset($_GET['code'])) { $file = $_GET['code']; $fp = fopen($file.'.txt', 'r'); $str = fgets($fp, 255); fclose ($fp); echo highlight_string($str, true);} J'ai parcouru le Hub et PHP.net mais je n'ai rien trouvé de préçis. Une petite idée ? <edit> Je préçise que je n'ai pas droit à highlight_file chez Free. </edit> Modifié 25 Avril 2005 par lupucide
Portekoi Posté 25 Avril 2005 Posté 25 Avril 2005 Salut, Regarde ici : http://www.lephpfacile.com/tips/index.php?p=8 Reprends le code et au lieu de faire un echo, tu fais stock tout dans ta variables $str. Ca devrait marcher si j'ai bien compris ton problème Bye Portekoi
Anonymus Posté 25 Avril 2005 Posté 25 Avril 2005 if (isset($_GET['code'])) {$file = $_GET['code'];$fp = fopen($file.'.txt', 'r');$str = fgets($fp, 255);fclose ($fp);echo highlight_string($str, true);} Bonjour, En fait, le problème est que tu ne parcours ton fichier que sur une seule ligne. Il manque la ligne qui dit : "Tant que l'on n'est pas à la fin du fichier". En php, ca se traduit ainsi : while (! feof($fp)){ // fgets.. } (ensuite, une simple opération de 'concaténation' de la chaine $str, et le tour est joué ) Ca donnerait : if (isset($_GET['code'])) {$file = $_GET['code'];$fp = fopen($file.'.txt', 'r');$str="";while (!feof($fp)){ $str .= fgets($fp, 255); }fclose ($fp);echo highlight_string($str, true);} Anonymus.
lupucide Posté 25 Avril 2005 Auteur Posté 25 Avril 2005 (modifié) Arf, j'avais regardé sur cet excellent site sans voir ça. Je test ce soir et redonnerais des nouvelles. Merci. <edit> Merci aussi, Anonymus. Je vais voir tout ça après le boulot </edit> Modifié 25 Avril 2005 par lupucide
Dash Posté 25 Avril 2005 Posté 25 Avril 2005 Dans une precedente discussion sur le hub, diverses methodes ont deja ete presentees pour recuperer le contenu d'un fichier : Savoir si fichier .txt est vide, et afficher un message en consequence
Portekoi Posté 25 Avril 2005 Posté 25 Avril 2005 Re, La solution de Anonymus est meilleur si tu veux traiter les lignes une à une ce qui me parait le mieux d'ailleurs Sinon, utilises la fonction fread() pour prendre en entier ton fichier sans avoir à le parcourir A bientot Portekoi
Anonymus Posté 25 Avril 2005 Posté 25 Avril 2005 L'astuce donnée par le site est juste, dans le sens où elle marche. Mais elle est fausse dans le sens où elle le fait mal. On ne lit pas un fichier comme ca. De plus, elle est lourde, dans le sens où elle 'complexifie' considérablement la lecture du fichier. Imaginez un fichier de 3 gigas. On l'ouvre, on le lit "entièrement", et on l'éclate (autrement dit, on sépare toutes les lignes, pour faire d'un seul fichier, un tableau). Ensuite ? On se retrouve avec un tableau à gérer là où l'on avait un seul fichier, et on 're-lit' ce tableau. On lit donc ce tableau, et à chaque ligne (si c'est un fichier de 3 gigas, ca fait beaucoup.. ), à chaque ligne on fais un test.. Test qui ne réussira qu'une seule fois, en plus, et à la fin exclusivement. Je passe sur le fait qu'on ne ferme pas le fichier (fclose), on n'est plus à ca près. Pour apprendre les différentes fonctions, c'est bien, mais pour apprendre à programmer, il y a mieux. Anonymus.
Portekoi Posté 25 Avril 2005 Posté 25 Avril 2005 En même temps, 3 Go de code, je veux bien mais ca me parait un peu trop. Mais je suis d'accord avec toi.
Anonymus Posté 25 Avril 2005 Posté 25 Avril 2005 Non, pas du code, mais des logs par exemple. Pour un grand site ca fait pas forcément beaucoup de "jours". Le code sera sensé lire les 3 G de logs, et ca risque de lui prendre pas mal de temps.
lupucide Posté 25 Avril 2005 Auteur Posté 25 Avril 2005 Dash => ah ouais, j'ai dû passer à côté lors de ma recherche Merci à vous tous, maintenant tout est nickel. Mes reste plus qu'à rendre tout ça valide (pas gagné, là).
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant