Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Site Web > PHP > Langage, bibliothèques et fonctions > Enregistrer et lire des données de fichiers .ini > Les bases > Découverte du fichier ini > Lecture des commentaires

Découverte du fichier ini

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Pseudo Commentaire
Page : 1 
Hors ligne Bilbax # Posté le 26/04/2008 à 04:19:05 - Ce membre n'a pas mis de note
www.bilbax.eu
Avatar
Groupe : Membres
parse_ini_file() >_<
Hors ligne Kyle Katarn # Posté le 26/04/2008 à 11:32:42 - Ce membre n'a pas mis de note
Star Wars fan
Avatar
Groupe : Membres
Merci de lire entièrement les tutos avant de les commenter aussi bêtement qu'en me reprochant de ne pas parler d'une fonction dont je parle justement.
Citation : KyleKatarn (ce tuto)
J'en profite pour vous parler de la fonction parse_ini_file() qui fait cette opération que je vous conseille de ne pas utiliser, car elle ne récupère pas l'intégralité d'un item, si il trouve le signe '=' dans une valeur, la fonction ne renverra que ce qu'il y a avant. Cela est rarement un avantage et si jamais vous vouliez uniquement récupérer ce qu'il y a avant le premier = d'une valeur, il y a un moyen simple de le faire :
 
Hors ligne anonymousguest # Posté le 12/05/2008 à 00:34:25 - Ce membre n'a pas mis de note
I'm the Dude
Avatar
Groupe : Membres
Salut,

si je mets : « test = "hello=world" » dans un fichier ini et que je le parse avec parse_ini_file() ça fonctionne correctement...

Le seul inconvénient de parse_ini_file() c'est qu'on ne peut pas (du moins à ma connaissance) échapper les « " ». Personnellement, j'utilise parse_ini_file() et pour les guillemets droits, je mets &quot; (entité html correspondante) à la place et je remplace avec un str_replace().

EDIT :
Je rajoute que d'après ce que j'en ai vu (j'ai regardé vite fait, dis-moi si je me trompe) le code que tu proposes ne gère pas les valeurs sur plusieurs lignes, utilise des regex en masse (et inutilement) dans ta boucle et les commentaires après les valeurs sont considérés comme faisant partie de la valeur.

En conclusion, vive parse_ini_file() :p .

Bibles : PHP - MySQL - REGEX - REGEX² - XHTML - CSS
Pas bible : gestion des erreurs
 
Hors ligne Aztek # Posté le 12/05/2008 à 12:35:23 - Ce membre a mis la note : 14
blablabla
Avatar
Groupe : Membres
J'allais dire la même chose...
http://php.fr/doku.php/php.fr/function [...] ini-file.html

Pourquoi se compliquer la vie et celle des zéros ?
Tente de préciser que cette fonction existe dès l'introduction !

Les chats retombent-ils toujours sur leur pattes ? Selon l'association américaine des vétérinaires : sur 22 chats tombés d'une hauteur supérieure à 7 étages (environ 25m), un seul est mort sur le coup, 20 ont été blessés par leur chute (principalement à l'abdomen), dont 1/3 de lésions graves et 1/3 de lésions sérieuses... (Quid 1991. page 209b)
\mathfrak{Vive \ la \ France \ !}
 
Hors ligne samuel2202 # Posté le 12/05/2008 à 12:54:26 - Ce membre n'a pas mis de note
<? echo 'PHP for ever'; ?>
Avatar
Groupe : Membres
Et pour écrire dans ce ini, vous faites comment ? :)

Moi je trouve ce tuto assez intéressant... Cependant ce qui m'a choquer c'est l'utilisation de REGEX pour par exemple les commentaires... Faut pas déconner, ça prend beaucoup plus de ressources qu'un "substr" par exemple.
Code : PHP
1
2
3
4
5
<?php
if (substr($ligne, 0, 1) == ';') {
// C'est un commentaire...
}
?>
 
Hors ligne anonymousguest # Posté le 12/05/2008 à 19:15:15 - Ce membre n'a pas mis de note
I'm the Dude
Avatar
Groupe : Membres
Les fichiers ini sont très intéressants mais la moitié de ce tuto explique comment récupérer leur contenu avec des regex bien lourdes alors qu'une fonction native existe en php, en plus cette fonction est très rapide (dans certains cas, ça va même plus vite qu'un fichier php contenant la même chose sous la forme d'un array grâce à la simplicité de la syntaxe).

Personnellement, j'utilise les fichiers ini principalement pour des données statiques (le texte dans les différentes langues par exemple). Donc, j'écris les fichiers manuellement. Mais pour ça, le code du tuto a l'air potable (quoiqu'il ne prend pas en compte les variables qui ne sont pas contenues dans une section, alors que les sections sont facultatives).

Plutôt que substr($ligne, 0, 1), tu pourrais même te limiter à $ligne[0] mais c'est trop simple comme définition d'un commentaire, il ne faut pas oublier d'enlever les espaces avant et il faudrait prendre en compte les commentaires après une valeur.

Bibles : PHP - MySQL - REGEX - REGEX² - XHTML - CSS
Pas bible : gestion des erreurs
 
Hors ligne Kyle Katarn # Posté le 12/05/2008 à 19:59:33 - Ce membre n'a pas mis de note
Star Wars fan
Avatar
Groupe : Membres
Bon, je connaissais parse_ini_file avant d'écrire ce tuto ! Si vous le lisez entièrement vous vous en rendrez compte, je revalide ce tuto avec des explications plus précises sur les raisons que j'ai de laisser cette fonction de côté. Justement pour les commentaires après valeur, il est préférable dans le cas d'un stockage de texte long de considérer le point-virgule comme un caractère normal, ce que ne fait pas parse_ini_file. Ensuite la class ini qui termine le tuto peut être modifiée à volonté pour créer dans chaque utilisation différente un langage adapté (voir la prochaine mise à jour en cours de validation).
Remarquez que je propose en commentaire le parse_ini_file dans tous les codes qui concernent la récupération car, en effet, c'est une fonction pratique et intelligente mais qui se limite à un usage précis et qui a dans ce tuto "général" sur l'enregistrement de données par fichier a la place qu'elle mérite.

PS: j'ai remplacé les regex par une seule plus appropriée pour les groupes et par $ligne{0}!=';' pour info, $ligne[0] ne s'utilise plus en PHP 5 (cf Doc)
 
Hors ligne anonymousguest # Posté le 12/05/2008 à 22:25:00 - Ce membre n'a pas mis de note
I'm the Dude
Avatar
Groupe : Membres
Les valeurs qui contiennent des ";" sont des chaînes et les chaînes doivent être entourées de guillemets droits ('"'). Bien entendu, à l'intérieur de ces guillemets, les ";" ne sont pas considérés comme le début d'un commentaire et les retours à la ligne ne sont pas considérés comme la fin de la valeur (pratique pour les longs textes), contrairement à ce que tu fais.

Perdu, c'est $ligne{0} qui ne s'utilisera plus en PHP6 (cf. doc toi-même :p )

Bibles : PHP - MySQL - REGEX - REGEX² - XHTML - CSS
Pas bible : gestion des erreurs
 
Hors ligne Kyle Katarn # Posté le 12/05/2008 à 22:31:22 - Ce membre n'a pas mis de note
Star Wars fan
Avatar
Groupe : Membres
Merci de l'info, c'est pourtant cette page que j'avais lu et j'étais persuadé du contraire.
 
Hors ligne Lo-X # Posté le 04/07/2008 à 17:11:38 - Ce membre a mis la note : 18
Avatar
Groupe : Membres
Après avoir eu vraiment du mal, j'ai adapté ce système un peu à ma manière (en fait, sans respecter la syntaxe d'un ini) mais en gardant la fonctionnalité de base.

J'ai relu le tuto, pas mal de choses ont été corrigées, peut-être que je suis moins un zéro que la dernière fois aussi, et à présent j'adore ce système et j'arrive à me passer plus volontiers de ma base de donnée.

Je tiens à te féliciter pour le temps que tu as passé à rédiger, puis rectifier par ci par là certaines choses, ça mérite une bonne note :)
 
Hors ligne Zakmaf # Posté le 20/10/2008 à 12:58:34 - Ce membre a mis la note : 14
Avatar
Groupe : Membres
Beau tuto, mais à la place de file_exists() je te conseille quand même is_file() c'est beaucoup mieux niveau consomation de ressources.

En règle générale, c'est quand même un très bon tuto malgré certaines fonctions utilisées que je trouve déplacée ou injustifiée.

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 68 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.1564s (0.1442s)