PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.php > manipulation de fichier
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
manipulation de fichier

Réponse
 
LinkBack Outils de la discussion
Vieux 17/09/2007, 16h59   #1
Rom1
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut manipulation de fichier

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.
  Réponse avec citation
Vieux 17/09/2007, 22h12   #2
CrazyCat
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: manipulation de fichier

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
  Réponse avec citation
Vieux 17/09/2007, 22h12   #3
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: manipulation de fichier

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}.
  Réponse avec citation
Vieux 17/09/2007, 22h12   #4
Philippe
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: manipulation de fichier

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.

  Réponse avec citation
Vieux 17/09/2007, 22h12   #5
Bruno Desthuilliers
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: manipulation de fichier

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é...)
  Réponse avec citation
Vieux 18/09/2007, 01h05   #6
Antoine Polatouche
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: manipulation de fichier

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
  Réponse avec citation
Vieux 18/09/2007, 01h05   #7
Antoine Polatouche
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: manipulation de fichier

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
}
}
  Réponse avec citation
Vieux 18/09/2007, 01h17   #8
Olivier Miakinen
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: manipulation de fichier

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) ?
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 22h30.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,14598 seconds with 16 queries