Convertir le tableau en un .fichier ini
J'ai besoin d'analyser un .ini
fichier dans un tableau, et plus tard de modifier les valeurs de la matrice et de l'exporter vers la même .ini
fichier.
J'ai réussi à lire le fichier, mais n'ai pas trouvé de moyen simple pour l'écrire.
Des suggestions?
Échantillon .ini
fichier:
1 = 0;
2 = 1372240157; //timestamp.
stackoverflow.com/questions/1268378/... pourraient bien vous aider
n'est-il pas préférable d'utiliser json?
Dépend de la demande de Robert. Si les données sont destinées à être stockées et récupérées sans interaction humaine, ou transmis à travers un réseau (ajax, etc), puis json est approprié. Si les données doivent parfois être modifié manuellement par les humains qui peuvent ou peuvent ne pas être les développeurs, l'avoir dans une plus lisibles .format ini est approprié. Il convient également de mentionner que .les fichiers ini réellement analyser plus rapidement que les fichiers php.
n'est-il pas préférable d'utiliser json?
Dépend de la demande de Robert. Si les données sont destinées à être stockées et récupérées sans interaction humaine, ou transmis à travers un réseau (ajax, etc), puis json est approprié. Si les données doivent parfois être modifié manuellement par les humains qui peuvent ou peuvent ne pas être les développeurs, l'avoir dans une plus lisibles .format ini est approprié. Il convient également de mentionner que .les fichiers ini réellement analyser plus rapidement que les fichiers php.
OriginalL'auteur user2216190 | 2013-06-26
Vous devez vous connecter pour publier un commentaire.
Pour écrire la
.ini
fichier, vous devez créer votre propre fonction, pour PHP n'offre pas de fonctions hors de la zone autres que pour la lecture (ce qui peut être trouvé ici: http://php.net/manual/pl/function.parse-ini-file.php).Un exemple de fonction qui peut encapsuler un tableau multidimensionnel pour
.ini
-compatible avec la syntaxe de chaîne pourrait ressembler à ceci:Vous pouvez tester de cette façon:
(Notez que court la syntaxe des tableaux est disponible uniquement depuis PHP 5.4+.)
Également noter qu'il ne préserve pas les commentaires qui étaient présents dans votre question. Il n'est pas facile de se souvenir d'eux, quand c'est un logiciel (par opposition à l'homme) qui met à jour le fichier.
$out .= "$k=$v" . PHP_EOL;
?C'est le même que pour les séries de concaténations:
$out = $out . $k.'='.$v . PHP_EOL;
, oùPHP_EOL
est caractère de saut de ligne.Pourquoi adhérer à points? Cette fonction ne fonctionne pas comme prévu
OriginalL'auteur rr-
J'ai apporté des changements importants à la fonction fournie par rr- (merci beaucoup pour le coup de commencer!)
J'ai été mécontents de la manière multidimensionnelle propriétés sont traitées dans cette version. J'ai pris l'exemple de fichier ini à partir de la documentation php de la page pour parse_ini_file et a obtenu un résultat qui comprend les touches
third_section.phpversion
etthird_section.urls
- pas ce que j'attendais.J'ai essayé d'utiliser un RecursiveArrayIterator pour un nombre illimité de nidification, mais malheureusement, un en-tête avec des paires clé-valeur est la limite maximale de la récursivité qui parse_ini_string traitera avant de s'étouffer avec un message d'erreur.
J'ai donc commencé à partir de zéro, ajouté quelques curveballs que le quatrième et dernier élément, et qui a abouti à ceci:
Mon entrée et de sortie des tableaux de correspondance (fonctionnellement, de toute façon) et mon fichier ini ressemble à ceci:
Je sais que cela peut être un peu exagéré, mais j'ai vraiment besoin de cette fonction dans deux de mes propres projets. Maintenant, je peux lire un fichier ini, le modifier et l'enregistrer.
OriginalL'auteur vahanpwns
La réponse par RR fonctionne et j'ai ajouté un changement
dans le else
changer de
" Autour de la valeur, vous pouvez avoir de grandes valeurs dans le INI sinon parse_ini_* les fonctions ont un problème
http://missioncriticallabs.com/blog/2009/08/double-quotation-marks-in-php-ini-files/
OriginalL'auteur Suhas Pharkute
Que sur l'utilisation de php fonctions internes ? http://php.net/manual/en/function.parse-ini-file.php
Ces fonctions sont à analyser un fichier ini ou chaîne dans le format ini, il veut exporter tableau de fichier ini qui ces fonctions NE PAS FAIRE
à partir du manuel "parse_ini_string() retourne les paramètres de chaîne ini dans un tableau associatif." il veut à l'opposé de l'action. Il veut paramètres dans la gamme à être écrite dans le fichier ini.
Oui je l'obtenir
Ceux qui upvoted cette réponse n'a pas lu la question.
OriginalL'auteur PierreL