Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

manipulation de fichier

9 réponses
Avatar
Rom1
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.

9 réponses

Avatar
CrazyCat
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

Avatar
Philippe
Essaye avec la fonction fseek

http://fr.php.net/manual/fr/function.fseek.php

On 2007-09-17 17:59:04 +0200, Rom1 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.


Avatar
Olivier Miakinen

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}.

Avatar
Bruno Desthuilliers
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é...)

Avatar
Antoine Polatouche

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

Avatar
Antoine Polatouche
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
}
}

Avatar
Olivier Miakinen

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) ?


Avatar
Antoine Polatouche
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."

Avatar
Rom1
Merci pour vos précieux renseignements. Il ne me reste plus qu'à les
mettre en pratique.


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.