OVH Cloud OVH Cloud

equivalent fgets pour une variable simple

5 réponses
Avatar
Franck
Bonjour,

Quel serait pour vous l'équivalent de : "je récupère la première ligne
de mon fichier" appliqué à une variable?
Si vous l'avez testé, également le plus rapide?

En gros est-on obligé de passer par des substr, strlen et tout le bazar
pour le faire?

Merci

--
Franck

5 réponses

Avatar
P'tit Marcel
Franck wrote:

Bonjour,

Quel serait pour vous l'équivalent de : "je récupère la première ligne
de mon fichier" appliqué à une variable?


pas trop compris la question, mais

$ligne = strtok ($variable, "n");

devrait le faire, non ?

--

Avatar
Franck
Franck wrote:

Bonjour,

Quel serait pour vous l'équivalent de : "je récupère la première ligne
de mon fichier" appliqué à une variable?



pas trop compris la question, mais

$ligne = strtok ($variable, "n");

devrait le faire, non ?


Bonjour,

C'est l'idée oui. Je l'ai mis tel quel ne sachant comment le formuler
justement...
En fait je me dis que fgets prendre chaque ligne une par une sans
parcourir la totalité du contenu (j'ai peut-être tort).
Du coup si je m'arrête à la première, il ne va pas travailler beaucoup,
c'est pour ça que j'avais rajouté "le plus rapide selon vous".
strtok pour moi découpe $variable pour le mettre dans un tableau, donc
charge tout le contenu de $variable.

Euh, c'est plus clair? :)

--
Franck

--


Avatar
P'tit Marcel
Franck wrote:


strtok pour moi découpe $variable pour le mettre dans un tableau, donc
charge tout le contenu de $variable.


J'ai pas trop le temps de décortiquer le source de php pour voir comment
il implémente strtok mais ça m'étonnerais que cela passe par un tableau.

A mon avis, strotk parcoure la chaîne en entrée et compare chaque
caractère successivement à celui/ceux donné(s) en second paramètre. En
cas de correspondance, strtok renvoit la chaîne comprise entre la
position de départ et dernier caractère non correspondant. La position
de départ est alors mise à jour au cas où strtok est rééxécuté. Pas
besoin d'un tableau, il suffit simplement de gérer un pointeur.

Mais c'est juste mon avis.

--

Avatar
Olivier Miakinen

strtok pour moi découpe $variable pour le mettre dans un tableau, donc
charge tout le contenu de $variable.


J'ai pas trop le temps de décortiquer le source de php pour voir comment
il implémente strtok mais ça m'étonnerais que cela passe par un tableau.


Peut-être se contente-t-il d'appeler le strtok de la libc, non ?

A mon avis, strtok parcoure la chaîne en entrée et compare chaque
caractère successivement à celui/ceux donné(s) en second paramètre. En
cas de correspondance, strtok renvoit la chaîne comprise entre la
position de départ et dernier caractère non correspondant. La position
de départ est alors mise à jour au cas où strtok est rééxécuté. Pas
besoin d'un tableau, il suffit simplement de gérer un pointeur.


Si je me rappelle bien, c'est comme ça que c'est fait en C. Avant de
retourner le pointeur, il place un caractère nul à l'endroit où le token
se termine.

--


Avatar
marc.quinton-PAS-DE-
Franck wrote:
Bonjour,

Quel serait pour vous l'équivalent de : "je récupère la première ligne
de mon fichier" appliqué à une variable?
Si vous l'avez testé, également le plus rapide?


si c'est pour lire un fichier de config, il y a ini_get qui fait
tres bien cela. D'ailleurs il y a aussi dans les users-comments
un exemple de ini_get qui fait de la lecture de fichier et qui
assigne des variables,

- est-ce que tu as une possibilité d'agir sur le contenu du fichier ?
- il y a aussi si tu veux pas de base de donnée le format CSV qui est
nativement géré par php.

--