|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
Je suis novice en PHP et je cherche à manipuler des fichiers. J'ai un fichier "fichier.txt" composé de plusieurs lignes. Je souhaiterais réussir à effectuer la chose suivante : Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème caractère sur mon navigateur, sinon je passe à la ligne suivante. Avec la fonction fgetc() j'arrive à récupérer mon premier caractère mais je ne trouve pas la façon de faire pour que mon pointeur se positionne sur le 10ème caractère. J'espère être clair. Merci pour votre aide. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Rom1 wrote:
> Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème > caractère sur mon navigateur, sinon je passe à la ligne suivante. > Avec la fonction fgetc() j'arrive à récupérer mon premier caractère > mais je ne trouve pas la façon de faire pour que mon pointeur se > positionne sur le 10ème caractère. Je pense que tu ne trouveras pas la solution aussi simplement. Tu peux utiliser fseek() pour te déplacer dans le fichier mais ce n'est pas la manière la plus aisée (comptage du déplacement en octets). A mon avis, si la ligne commence par un A, tu fais un fgets() pour récupérer la ligne dans une variable (par exemple $ligne) et tu peux récupérer $ligne{9} qui correspond au 10ème caractère. -- Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu Réseau IRC Francophone: http://www.crazy-irc.net |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Le 17/09/2007 17:59, Rom1 a écrit :
> > Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème > caractère sur mon navigateur, sinon je passe à la ligne suivante. > > Avec la fonction fgetc() j'arrive à récupérer mon premier caractère > mais je ne trouve pas la façon de faire pour que mon pointeur se > positionne sur le 10ème caractère. Ne pas utiliser fgetc(), à mon humble avis. Tu récupères chaque ligne par fgets(), mettons $ligne, et ensuite si substr($ligne, 0, 1) vaut "A" tu retournes substr($ligne, 9, 1) (pourvu que le résultat soit différent de false, c'est-à-dire que la ligne contienne au moins 10 caractères). Note qu'à la place de substr tu peux d'ailleurs utiliser $string{0} et $string{9}. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Essaye avec la fonction fseek
http://fr.php.net/manual/fr/function.fseek.php On 2007-09-17 17:59:04 +0200, Rom1 <f.rom1nospam@wanadoo.fr> said: > Bonjour, > > Je suis novice en PHP et je cherche à manipuler des fichiers. > > J'ai un fichier "fichier.txt" composé de plusieurs lignes. Je > souhaiterais réussir à effectuer la chose suivante : > > Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème > caractère sur mon navigateur, sinon je passe à la ligne suivante. > > Avec la fonction fgetc() j'arrive à récupérer mon premier caractère > mais je ne trouve pas la façon de faire pour que mon pointeur se > positionne sur le 10ème caractère. > > J'espère être clair. Merci pour votre aide. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Rom1 wrote:
> Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème > caractère sur mon navigateur, sinon je passe à la ligne suivante. > Avec la fonction fgetc() j'arrive à récupérer mon premier caractère > mais je ne trouve pas la façon de faire pour que mon pointeur se > positionne sur le 10ème caractère. Je pense que tu ne trouveras pas la solution aussi simplement. Tu peux utiliser fseek() pour te déplacer dans le fichier mais ce n'est pas la manière la plus aisée (comptage du déplacement en octets). A mon avis, si la ligne commence par un A, tu fais un fgets() pour récupérer la ligne dans une variable (par exemple $ligne) et tu peux récupérer $ligne{9} qui correspond au 10ème caractère. -- Discussions et débats sur l'actualité: http://www.sujets-d-actu.eu Réseau IRC Francophone: http://www.crazy-irc.net |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Le 17/09/2007 17:59, Rom1 a écrit :
> > Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème > caractère sur mon navigateur, sinon je passe à la ligne suivante. > > Avec la fonction fgetc() j'arrive à récupérer mon premier caractère > mais je ne trouve pas la façon de faire pour que mon pointeur se > positionne sur le 10ème caractère. Ne pas utiliser fgetc(), à mon humble avis. Tu récupères chaque ligne par fgets(), mettons $ligne, et ensuite si substr($ligne, 0, 1) vaut "A" tu retournes substr($ligne, 9, 1) (pourvu que le résultat soit différent de false, c'est-à-dire que la ligne contienne au moins 10 caractères). Note qu'à la place de substr tu peux d'ailleurs utiliser $string{0} et $string{9}. |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Essaye avec la fonction fseek
http://fr.php.net/manual/fr/function.fseek.php On 2007-09-17 17:59:04 +0200, Rom1 <f.rom1nospam@wanadoo.fr> said: > Bonjour, > > Je suis novice en PHP et je cherche à manipuler des fichiers. > > J'ai un fichier "fichier.txt" composé de plusieurs lignes. Je > souhaiterais réussir à effectuer la chose suivante : > > Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème > caractère sur mon navigateur, sinon je passe à la ligne suivante. > > Avec la fonction fgetc() j'arrive à récupérer mon premier caractère > mais je ne trouve pas la façon de faire pour que mon pointeur se > positionne sur le 10ème caractère. > > J'espère être clair. Merci pour votre aide. |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
Rom1 a écrit :
> Bonjour, > > Je suis novice en PHP et je cherche à manipuler des fichiers. > > J'ai un fichier "fichier.txt" composé de plusieurs lignes. Je > souhaiterais réussir à effectuer la chose suivante : > > Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème > caractère sur mon navigateur, s/mon navigateur/la sortie standard/ > sinon je passe à la ligne suivante. > > Avec la fonction fgetc() j'arrive à récupérer mon premier caractère > mais je ne trouve pas la façon de faire pour que mon pointeur se > positionne sur le 10ème caractère. > Si tu tiens absolument à faire une lecture caractère par caractère, tu peux toujours regarder du côté de fseek() et ftell(). Sinon, tu peux faire une lecture par ligne (avec fgets()), et accéder directement aux premier et dixèmes caractères de la ligne avec la même notation que pour un tableau: $f = fopen('/chemin/vers/fichier.txt', 'r'); if (! is_resource($f)) { die("oops"); } $line = fgets($f); while (! feof($f)) { if ($line[0] == 'A') { echo $line[9]; } $line = fgets($f); } fclose($f); (pas testé...) |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Rom1 a écrit :
> Bonjour, > > Je suis novice en PHP et je cherche à manipuler des fichiers. > > J'ai un fichier "fichier.txt" composé de plusieurs lignes. Je > souhaiterais réussir à effectuer la chose suivante : > > Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème > caractère sur mon navigateur, s/mon navigateur/la sortie standard/ > sinon je passe à la ligne suivante. > > Avec la fonction fgetc() j'arrive à récupérer mon premier caractère > mais je ne trouve pas la façon de faire pour que mon pointeur se > positionne sur le 10ème caractère. > Si tu tiens absolument à faire une lecture caractère par caractère, tu peux toujours regarder du côté de fseek() et ftell(). Sinon, tu peux faire une lecture par ligne (avec fgets()), et accéder directement aux premier et dixèmes caractères de la ligne avec la même notation que pour un tableau: $f = fopen('/chemin/vers/fichier.txt', 'r'); if (! is_resource($f)) { die("oops"); } $line = fgets($f); while (! feof($f)) { if ($line[0] == 'A') { echo $line[9]; } $line = fgets($f); } fclose($f); (pas testé...) |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
Olivier Miakinen a écrit :
> Note qu'à la place de substr tu peux d'ailleurs utiliser $string{0} et > $string{9}. D'après la doc il vaut mieux utiliser $string[0] que $string{0}, pour prendre les bonnes habitudes... http://fr3.php.net/manual/fr/language.types.string.php // Méthode alternative utilisant des {}, obsolète depuis PHP 6 |
|
|
|
#11 |
|
Messages: n/a
Hébergeur: |
Rom1 a écrit :
> Bonjour, bonjour. > > Je suis novice en PHP et je cherche à manipuler des fichiers. > > J'ai un fichier "fichier.txt" composé de plusieurs lignes. Je > souhaiterais réussir à effectuer la chose suivante : > > Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème > caractère sur mon navigateur, sinon je passe à la ligne suivante. > > Avec la fonction fgetc() j'arrive à récupérer mon premier caractère > mais je ne trouve pas la façon de faire pour que mon pointeur se > positionne sur le 10ème caractère. Pour lire un fichier texte et le décomposer en lignes, la fonction file() est très bien: elle retourne un tableau de lignes. donc: $lignes = file('fichier.txt'); foreach($lignes as $ligne) { if($ligne[0]=='A') { // Si moins de 10 caractères, $dixieme sera vide $dixieme = $ligne[9]; // Faire ce qu'il faut de $dixieme } } |
|
|
|
#12 |
|
Messages: n/a
Hébergeur: |
Olivier Miakinen a écrit :
> Note qu'à la place de substr tu peux d'ailleurs utiliser $string{0} et > $string{9}. D'après la doc il vaut mieux utiliser $string[0] que $string{0}, pour prendre les bonnes habitudes... http://fr3.php.net/manual/fr/language.types.string.php // Méthode alternative utilisant des {}, obsolète depuis PHP 6 |
|
|
|
#13 |
|
Messages: n/a
Hébergeur: |
Rom1 a écrit :
> Bonjour, bonjour. > > Je suis novice en PHP et je cherche à manipuler des fichiers. > > J'ai un fichier "fichier.txt" composé de plusieurs lignes. Je > souhaiterais réussir à effectuer la chose suivante : > > Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème > caractère sur mon navigateur, sinon je passe à la ligne suivante. > > Avec la fonction fgetc() j'arrive à récupérer mon premier caractère > mais je ne trouve pas la façon de faire pour que mon pointeur se > positionne sur le 10ème caractère. Pour lire un fichier texte et le décomposer en lignes, la fonction file() est très bien: elle retourne un tableau de lignes. donc: $lignes = file('fichier.txt'); foreach($lignes as $ligne) { if($ligne[0]=='A') { // Si moins de 10 caractères, $dixieme sera vide $dixieme = $ligne[9]; // Faire ce qu'il faut de $dixieme } } |
|
|
|
#14 |
|
Messages: n/a
Hébergeur: |
Le 18/09/2007 02:05, Antoine Polatouche a écrit :
> >> Note qu'à la place de substr tu peux d'ailleurs utiliser $string{0} et >> $string{9}. > > D'après la doc il vaut mieux utiliser $string[0] que $string{0}, pour > prendre les bonnes habitudes... > > http://fr3.php.net/manual/fr/language.types.string.php > // Méthode alternative utilisant des {}, obsolète depuis PHP 6 Tiens, pour une fois ce n'est pas que dans la doc en français qu'il y a des incohérences. http://fr.php.net/manual/fr/function.substr.php // Accéder à un simple caractère dans une chaîne // peut également être réalisé en utilisant des accolades $string = 'abcdef'; echo $string{0}; // a echo $string{3}; // d echo $string{strlen($string)-1}; // f http://fr.php.net/manual/en/function.substr.php // Accessing single characters in a string // can also be achived using "curly braces" $string = 'abcdef'; echo $string{0}; // a echo $string{3}; // d echo $string{strlen($string)-1}; // f Tu aurais le courage de signaler le fait (en anglais, probablement) ? |
|
|
|
#15 |
|
Messages: n/a
Hébergeur: |
Le 18/09/2007 02:05, Antoine Polatouche a écrit :
> >> Note qu'à la place de substr tu peux d'ailleurs utiliser $string{0} et >> $string{9}. > > D'après la doc il vaut mieux utiliser $string[0] que $string{0}, pour > prendre les bonnes habitudes... > > http://fr3.php.net/manual/fr/language.types.string.php > // Méthode alternative utilisant des {}, obsolète depuis PHP 6 Tiens, pour une fois ce n'est pas que dans la doc en français qu'il y a des incohérences. http://fr.php.net/manual/fr/function.substr.php // Accéder à un simple caractère dans une chaîne // peut également être réalisé en utilisant des accolades $string = 'abcdef'; echo $string{0}; // a echo $string{3}; // d echo $string{strlen($string)-1}; // f http://fr.php.net/manual/en/function.substr.php // Accessing single characters in a string // can also be achived using "curly braces" $string = 'abcdef'; echo $string{0}; // a echo $string{3}; // d echo $string{strlen($string)-1}; // f Tu aurais le courage de signaler le fait (en anglais, probablement) ? |
|
|
|
#16 |
|
Messages: n/a
Hébergeur: |
Olivier Miakinen a écrit :
> echo $string{0}; // a > echo $string{3}; // d > echo $string{strlen($string)-1}; // f > > Tu aurais le courage de signaler le fait (en anglais, probablement) ? C'est déjà fait dans les commentaires: Robert Chapin 26-Jun-2007 11:40 All the references to "curly braces" on this page appear to be obsolete. According to http://us.php.net/manual/en/language.types.string.php "Using square array-brackets is preferred because the {braces} style is deprecated as of PHP 6." |
|
|
|
#17 |
|
Messages: n/a
Hébergeur: |
Olivier Miakinen a écrit :
> echo $string{0}; // a > echo $string{3}; // d > echo $string{strlen($string)-1}; // f > > Tu aurais le courage de signaler le fait (en anglais, probablement) ? C'est déjà fait dans les commentaires: Robert Chapin 26-Jun-2007 11:40 All the references to "curly braces" on this page appear to be obsolete. According to http://us.php.net/manual/en/language.types.string.php "Using square array-brackets is preferred because the {braces} style is deprecated as of PHP 6." |
|
|
|
#18 |
|
Messages: n/a
Hébergeur: |
Merci pour vos précieux renseignements. Il ne me reste plus qu'à les
mettre en pratique. Rom1 a écrit : > Bonjour, > > Je suis novice en PHP et je cherche à manipuler des fichiers. > > J'ai un fichier "fichier.txt" composé de plusieurs lignes. Je > souhaiterais réussir à effectuer la chose suivante : > > Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème > caractère sur mon navigateur, sinon je passe à la ligne suivante. > > Avec la fonction fgetc() j'arrive à récupérer mon premier caractère > mais je ne trouve pas la façon de faire pour que mon pointeur se > positionne sur le 10ème caractère. > > J'espère être clair. Merci pour votre aide. |
|
|
|
#19 |
|
Messages: n/a
Hébergeur: |
Merci pour vos précieux renseignements. Il ne me reste plus qu'à les
mettre en pratique. Rom1 a écrit : > Bonjour, > > Je suis novice en PHP et je cherche à manipuler des fichiers. > > J'ai un fichier "fichier.txt" composé de plusieurs lignes. Je > souhaiterais réussir à effectuer la chose suivante : > > Si le premier caractère de la ligne est un "A" alors j'affiche le 10ème > caractère sur mon navigateur, sinon je passe à la ligne suivante. > > Avec la fonction fgetc() j'arrive à récupérer mon premier caractère > mais je ne trouve pas la façon de faire pour que mon pointeur se > positionne sur le 10ème caractère. > > J'espère être clair. Merci pour votre aide. |
|
![]() |
| Outils de la discussion | |
|
|