Re: Anyone: [PHP-WIN] *.ini

From: Date: Wed, 16 May 2001 02:09:29 +0000
Subject: Re: Anyone: [PHP-WIN] *.ini
References: 1 2 3 4 5  Groups: php.windows 
Request: Send a blank email to php-windows+get-7595@lists.php.net to get a copy of this message
On Tue, 15 May 2001 02:19:52 -0400, you wrote: >>[StoreData] >>Name=Ben Hurr > >Has anyone a few lines of code that could help read a couple of variables in an >*.ini file? Here's something I did in a hurry. It can be greatly improved, but it appears to work. The class is called IniReader. I put it into an include file called inireader.inc.php, so that's why the example shows that as an include line. The constructor takes 3 parameters - the file name, the section heading, and the variable desired. See the example which returns "United States". First the example code (real short): ================================= <?php include('inireader.inc.php'); $ini = new IniReader('c:\windows\win.ini', '[intl]', 'scountry'); $ini->findvalue(); if ($ini->errorval == 0) { if (empty($ini->requiredvalue)) print("Not found or blank.<BR>"); else print($ini->requiredvalue."<BR>"); } else print("Error #".$ini->errorval." encountered.<BR>"); ?> ================================= Now the class itself - (bigger, but not huge): it should be improved with better error handling, but as a first pass.... what the heck: Read it carefully, because word-wrap (yours or mine or both) is probably going to mess it up pretty good. ================================= <?php class IniReader { var $filename; var $sectionkey; var $varkey; var $errorval; var $linearray; var $requiredvalue; // constructor takes name of ini file (with path) - ie "c:\windows\win.ini", // section - ie "[intl]", // variable to resolve - ie "sCountry" // with above, on my system, should return "United States" function IniReader($filename = "", $sectionkey = "", $varkey = "") { $this->filename = $filename; $this->sectionkey = $sectionkey; $this->varkey = $varkey; $this->errorval = 0; $this->requiredvalue = ""; $this->linearray = array(""); } // function to pull ini file into an array function getfilearray() { if (empty($this->filename)) $this->errorval = 1; // no filename provided elseif (!is_file($this->filename)) $this->errorval = 2; // no such file (or invalid filename) else $this->linearray = file($this->filename); } function findvalue() { $this->getfilearray(); // load up array with ini file if ($this->errorval == 0) // seems ok { if (empty($this->sectionkey)) $this->errorval = 3; // no sectionkey provided else { $eleval = current($this->linearray); // get 1st line of file (array element 0) // watch for end of file and look for sectionkey requested while (!($eleval === false) and (strncasecmp($eleval, $this->sectionkey, strlen($this->sectionkey)) != 0)) $eleval = next($this->linearray); // not found, so continue $eleval = next($this->linearray); // move to next line (could be eof) // watch for eof and only go until next section header encountered // if next section header found, then requested variable value not in this section, // so don't bother continuing while (!($eleval === false) and (strcmp(substr($eleval, 0, 1), "[") != 0)) { // did we find the variable desired? if (strncasecmp($eleval, $this->varkey, strlen($this->varkey)) == 0) { // yes, so put it into this->requiredvalue and quit looking $tmpval = stristr($eleval, "="); if (!($tmpval === false)) // no value at all??? ok, possible $this->requiredvalue = trim(substr($tmpval, 1, strlen($tmpval) - 1)); break; } else // not found yet so continue $eleval = next($this->linearray); } } } } } ?> ============================================== >Thanks, > >John > >Alan Popow wrote: > >> On Mon, 14 May 2001 21:48:54 -0400, you wrote: >> >> Ahh.. Ok. I see what you're getting at. >> >> While I haven't tried it, it probably wouldn't be a lot of code to create a >> function to do it using file() to read the .ini file into an array and then >> using array_search() to find the required information. >> >> Alan >> >> >There is no procedure in place, no one has created a module to ... to read ... >> >say ... >> > >> >[StoreData] >> >Name=Ben Hurr >> > >> >Not that I'm going to go Perling just for this, but ... >> > >> >?? >> >John >> > >> >Alan Popow a écrit : >> > >> >> On Mon, 14 May 2001 18:30:48 -0400, you wrote: >> >> >> >> A *.ini file is just a common garden variety text file. Read it however you >> >> read any other text file. >> >> >> >> Alan >> >> >> >> >How can I read the contents of an *.ini file? >> >> >Is there an example kicking around that I did not see? >> >> > >> >> >Thanks, >> >> > >> >> >John >> >> > >> >> >-- >> >> >John Taylor-Johnston >> >> >Langues Modernes >> >> >poste 289 >> >> >> >> -- >> >> PHP Windows Mailing List (http://www.php.net/) >> >> To unsubscribe, e-mail: php-windows-unsubscribe@lists.php.net >> >> For additional commands, e-mail: php-windows-help@lists.php.net >> >> To contact the list administrators, e-mail: php-list-admin@lists.php.net >> > >> >-- >> >John Taylor-Johnston >> >Langues Modernes >> >poste 289 >> >> -- >> PHP Windows Mailing List (http://www.php.net/) >> To unsubscribe, e-mail: php-windows-unsubscribe@lists.php.net >> For additional commands, e-mail: php-windows-help@lists.php.net >> To contact the list administrators, e-mail: php-list-admin@lists.php.net

« previous php.windows (#7595) next »