Tutorials
Werken met INI files in PHP
In PHP4 en later is er de mogelijkheid om te werken met INI files voor instellingen
Pagina 1
Wat zijn INI files
INI staat voor initialization en wordt gebruikt in de vorm van INI-bestand (initialization-file). INI bestanden waren in het DOS en Windows tijdperk erg populair voor het opslaan van instellingen. INI bestanden zie je tegenwoordig ook steeds vaker onder Linux.
Het bekenste INI bestand voor Windows was win.ini (te vinden in C:\Windows). Deze is sinds Windows 95 vervangen door het registery. Voor PHP-ers is er het bekende php.ini bestand.
Hoe ziet een INI bestand eruit
Een INI bestand kan je gewoon openen met je favorieten teksteditor. Bijvoorbeeld Notepad (Kladblok), Gedit, Mousepad of SciTe.
Het zijn normale tekstbestanden. Die opzich ook helemaal niet moeilijk zijn ingedeeld.
Het bekenste INI bestand voor Windows was win.ini (te vinden in C:\Windows). Deze is sinds Windows 95 vervangen door het registery. Voor PHP-ers is er het bekende php.ini bestand.
Hoe ziet een INI bestand eruit
Een INI bestand kan je gewoon openen met je favorieten teksteditor. Bijvoorbeeld Notepad (Kladblok), Gedit, Mousepad of SciTe.
Het zijn normale tekstbestanden. Die opzich ook helemaal niet moeilijk zijn ingedeeld.
Pagina 2
Een INI bestand, de indeling
INI bestanden zijn opgebouwd in hoofdstukken. Hoofdstukken (ook wel secties) worden aangegeven met [ignore][hoofdstuknaam][/ignore]. Let erop dat je gebruik maakt van rechte haken.
Onder een hoofdstukken hangen verschillende instellingen (ook wel parameters). Deze instellingen zijn heel simpel te maken namelijk naam-van-instelling = waarde
Er is ook nog de mogelijkheid voor commentaar. Je kan alleen commentaar opnemen per regel. Dus je kan niet halvewege een regel beginnen met commentaar. Als een regel begint met een ; dan is deze regel commentaar.
Het is min-of-meer gebruikelijk dat de eerste regel van het INI bestand begint met een commentaar regel met daarop alleen de naam van het bestand.
Voorbeeld INI
Bij de indeling moeten een aantal opmerkingen geplaatst worden:
Onder een hoofdstukken hangen verschillende instellingen (ook wel parameters). Deze instellingen zijn heel simpel te maken namelijk naam-van-instelling = waarde
Er is ook nog de mogelijkheid voor commentaar. Je kan alleen commentaar opnemen per regel. Dus je kan niet halvewege een regel beginnen met commentaar. Als een regel begint met een ; dan is deze regel commentaar.
Het is min-of-meer gebruikelijk dat de eerste regel van het INI bestand begint met een commentaar regel met daarop alleen de naam van het bestand.
Voorbeeld INI
; test.ini
; In dit bestand laat ik kort zien hoe een INI eruit kan zien
[gebruiker]
naam = Maarten
woonplaats = Krimpen aan den IJssel
[zinnen]
einstein = Logica brengt je van A naar B \
fantasie brengt je overal
overige = Lente: Zo mooi \
\t en toch alles naar de knoppen
Bij de indeling moeten een aantal opmerkingen geplaatst worden:
- [item]Er is geen standaard formaat voor INI bestanden;[/item]
[item]Hierdoor worden in sommige bestanden geen = teken gebruikt maar een : en word dit door sommige 'parsers' zo geslikt[/item]
[item]Als twee secties dezelfde naam hebben word afhankelijk van de parser alleen de eerste, alleen de laatste of een samenvoeging van beide gebruikt.[/item]
[item]Het kan voorkomen dat binnen één hoofdstuk meerdere keren dezelfde instellingnaam voorkomt[/item]
[item]Sommige parsers staan het toe dat je codes als \r, \t e.d. gebruikt.[/item]
[item]Aan \ aan het eind van de regel betekend dat je op de volgende regel verder gaat[/item]
[item]Sommige parsers accepteren # ook als commentaar regel[/item]
[item]Woorden als true, false, null, yes, no mag je niet gebruiken als instellingnaam[/item]
Pagina 3
INI bestand met PHP Parseren
Voor het inladen van de INI file in PHP hoef je slechts één functie te gebruiken. En deze functie kent maar twee parameters dus zo moeilijk kan het niet zijn - toch?
Simpelweg zal in veel gevallen de code er zo uitzien:
We hebben dan keurige een multi-dimensionale-array. Elk kopje heeft een key met daaronder de behorende instellingen.
De eerste parameter is het bestand dat ingelezen moet worden.
Als we de twee parameter op false zouden zetten krijgen we een singel array terug.
Via onderstaande code maken we zichtbaar wat er geparserd is:
Er vallen een aantal dingen op namelijk dat PHP geen ondersteuning biedt voor \ (nieuwe regel) en ook niet voor de andere \t, \r, \n, enz.
Op het internet zijn verschillende functies te vinden die hetzelfde doen maar wel ondersteuning bieden hiervoor. [google]parser ini files php function[/google]
Bij het werken met deze functie moet nog rekening gehouden worden met de eigenschap dat als de waarde van een instelling hetzelfde is als een constante deze wordt vervangen door de waarde van de constante.
Belangrijke opmerking
Ge ja MySQL of andere belangrijke gegevens opslaan in een INI bestand zorg er dan voor dat deze buiten de root van je website (wwwroot, htdocs, public_html) zijn geplaatst. INI bestanden kunnen namelijk gewoon met de browser worden uitgelezen. Je kan ook kiezen voor een .htaccess beveiligingsoplossing
Zie ook PHP.net: [php]parse_ini_file[/php]
array parse_ini_file ( string filename [, bool process_sections] )Simpelweg zal in veel gevallen de code er zo uitzien:
<?php $instellingen = parse_ini_file("test.ini", true); ?>We hebben dan keurige een multi-dimensionale-array. Elk kopje heeft een key met daaronder de behorende instellingen.
De eerste parameter is het bestand dat ingelezen moet worden.
Als we de twee parameter op false zouden zetten krijgen we een singel array terug.
Via onderstaande code maken we zichtbaar wat er geparserd is:
<pre><?php
$instellingen = parse_ini_file("test.ini", true);
print_r($instellingen)
?></pre>Er vallen een aantal dingen op namelijk dat PHP geen ondersteuning biedt voor \ (nieuwe regel) en ook niet voor de andere \t, \r, \n, enz.
Op het internet zijn verschillende functies te vinden die hetzelfde doen maar wel ondersteuning bieden hiervoor. [google]parser ini files php function[/google]
Bij het werken met deze functie moet nog rekening gehouden worden met de eigenschap dat als de waarde van een instelling hetzelfde is als een constante deze wordt vervangen door de waarde van de constante.
Belangrijke opmerking
Ge ja MySQL of andere belangrijke gegevens opslaan in een INI bestand zorg er dan voor dat deze buiten de root van je website (wwwroot, htdocs, public_html) zijn geplaatst. INI bestanden kunnen namelijk gewoon met de browser worden uitgelezen. Je kan ook kiezen voor een .htaccess beveiligingsoplossing
Zie ook PHP.net: [php]parse_ini_file[/php]
Pagina 4
Overige
Documentatie:
en.Wikipedia.org, INI file
nl.Wikipedia.org, INI (bestandsformaat)
PHP.net parse_ini_file
Licentie:
Dit artikel/Deze tutorial valt onder de GNU/GPL licentie
Vragen, contact, hulp:
Via reactie mogelijkheden die worden geboden op sites waar dit artikel/deze tutorial staat
Via website van de Webmakerij contact
Versie:
19-feb-2007 16:33
Orgineel:
Op website van de Webmakerij http://webmakerij.markei.nl/artikelen/werken_met_ini_files_in_php.php
en.Wikipedia.org, INI file
nl.Wikipedia.org, INI (bestandsformaat)
PHP.net parse_ini_file
Licentie:
Dit artikel/Deze tutorial valt onder de GNU/GPL licentie
Vragen, contact, hulp:
Via reactie mogelijkheden die worden geboden op sites waar dit artikel/deze tutorial staat
Via website van de Webmakerij contact
Versie:
19-feb-2007 16:33
Orgineel:
Op website van de Webmakerij http://webmakerij.markei.nl/artikelen/werken_met_ini_files_in_php.php
Reacties
0