manipulation de fichier

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
CrazyCat
Le #5097
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

Philippe
Le #5099
Essaye avec la fonction fseek

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

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


Olivier Miakinen
Le #5100

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

Bruno Desthuilliers
Le #5096
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é...)

Antoine Polatouche
Le #4558

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

Antoine Polatouche
Le #5095
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
}
}

Olivier Miakinen
Le #4557

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


Antoine Polatouche
Le #4556
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."

Rom1
Le #4006
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.


Publicité
Poster une réponse
Anonyme