[PHP] problemen bij vergelijking

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • THIJZEL
  • Registratie: Januari 2001
  • Niet online
Hallo,

Ik heb de volgende funtie geschreven om een waarde uit een inifile te lezen, maar ik ondervind problemen bij het vergelijken van de (bij het aanroepen van de functie gegeven) sectie met de secties gelezen uit het ini bestand.

Op regel 15 word dit vergeleken, maar hier komt altijd fase uit, welke sectienaam ik ook meegeef.


de volgende functie roep ik aan met de parameters: ("test.txt","outlook","smtpserver"):D
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function readvalue($inifile, $section, $key)
{
$fp = fopen("test.txt","r");
        while(!feof($fp))
        {
            $regel = fgets($fp,4096);
                if ($regel[0] == "[")
                {
                                        
                        echo("new current section found!: ".$regel."<br>");
                        $currentsection = $regel;
                        echo("if ".$currentsection." = [".$section."]<br>");
                        
                }
                else if($currentsection == "[".$section."]")
                    {
                    echo("section matched: ".$regel." = "."[".$section."]"."<br>");
                    if($regel)
                        {
                                list($fkey,$value) = split("=",$regel,2);                   
                                //echo("values splitted: ".$fkey." and ".$value." from: ".$regel."<br>");
                                //echo($fkey." equals ".$key."<br>");
                                if ($fkey == $key)
                                {
                                    return($value);
                                    exit;
                                }
                         }
                    }
            }       
    fclose($fp);
}

De output is dan als volgt:
code:
1
2
3
4
5
6
new current section found!: [test]
if [test] = [outlook]
new current section found!: [test1]
if [test1] = [outlook]
new current section found!: [outlook]
if [outlook] = [outlook]


test.txt ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
[test]
test1=testss
test2=test
test3=jooo

[test1]
test=bla
outlookcheck=ok

[outlook]
smtpserver=test


Ik hoop dat ik mijn probleem duidelijk verwoord heb...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom gebruik je niet gewoon parse_ini_file? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Staan er niet ergens toevallig spaties voor of achter? Ik kan me zo voorstellen dat er een spatie staat, waardoor je dit gaat doen in PHP:
PHP:
1
else if ( "[test]" == "[test] " ) { .. }

[ Voor 16% gewijzigd door OkkE op 18-05-2004 12:57 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Je currentsection eindigt vast op een newline, terwijl je "[".$section."]" dat niet doet.

Acties:
  • 0 Henk 'm!

  • THIJZEL
  • Registratie: Januari 2001
  • Niet online
NMe84 schreef op 18 mei 2004 @ 12:55:
Waarom gebruik je niet gewoon parse_ini_file? :?
:p wist niet dat die er was :P, heb gezocht via google, maar ik vond alleen klasses gemaakt door anderen en geen die al 'in' php zitten.

Zijn er ook bestaande functies om weer terug te schijven naar ini bestanden in php?
Je currentsection eindigt vast op een newline, terwijl je "[".$section."]" dat niet doet.
ja idd, maar ik probeer dan $regel = strip_tags(nl2br($regel)) maar dit werkt ook niet, het zou iig de nl's naar html tags om moeten zetten om die dan weer te verwijderen..

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

THIJZEL schreef op 18 mei 2004 @ 13:06:
Zijn er ook bestaande functies om weer terug te schijven naar ini bestanden in php?
Volgens mij niet, maar het is veel makkelijker zelf te schrijven dan inlezen, omdat je hier een simpele dubbele loop kan maken. :)

Ik zou in ieder geval die ingebakken functie gebruiken als ik jou was. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
THIJZEL schreef op 18 mei 2004 @ 13:06:
ja idd, maar ik probeer dan $regel = strip_tags(nl2br($regel)) maar dit werkt ook niet, het zou iig de nl's naar html tags om moeten zetten om die dan weer te verwijderen..
Wat moet dat in hemelsnaam doen??
nl2br vervangt de \n door een br-tag gevolgd door een \n En je haalt de br-tag weer weg met die strip_tags, maar laat de \n dus staan.

Wat jij zoekt is vast de trim()-functie...

[ Voor 3% gewijzigd door ACM op 18-05-2004 13:16 ]


Acties:
  • 0 Henk 'm!

  • THIJZEL
  • Registratie: Januari 2001
  • Niet online
ACM schreef op 18 mei 2004 @ 13:16:
[...]

Wat moet dat in hemelsnaam doen??
nl2br vervangt de \n door een br-tag gevolgd door een \n En je haalt de br-tag weer weg met die strip_tags, maar laat de \n dus staan.

Wat jij zoekt is vast de trim()-functie...
Idd :p thanx, het werkt nu..

Acties:
  • 0 Henk 'm!

  • THIJZEL
  • Registratie: Januari 2001
  • Niet online
Ik heb nu ook een write functie gemaakt, deze functie schijft een key=value onder een sectie. Wanneer de sectie nog niet bestaat, gaat de functie naar het einde van het bestand en schijft dan daar de sectie.

De code is nog niet goed, zo is het schijven wanneer de sectie aanwezig is, nog niet goed uitgewerkt.

maar het probleem dat ik nu heb is dat ik wanneer ik een "\n" aar een bestand schrijf, dat ik,wanneer ik het bestand open in notepad, blokjes ipv nieuw regels in mijn output krijg. ( kan hier niet de output posten want hier krijg ik wel nieuwe regels..) :P

de functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function writevalue($inifile, $section, $key, $value)
{
    if ($fp = fopen("test.txt","r+t"))
        {
            if ($pos = $this->getheaderpos($fp, $section))
            {
                fseek($fp,$pos);
                //nog niet goed geinplementeerd
                fwrite($fp, $key."=".$value."\n",strlen($key."=".$value."\n"));
            }
            else
            {
                fseek($fp,-1,"SEEK_END");
                fputs($fp, "\r\n[".$section."]"."\n",strlen("\r\n[".$section."]"."\n")); 
                fputs($fp, $key."=".$value."\n",strlen($key."=".$value."\n"));
            }
        }

        fclose($fp);
}

[ Voor 11% gewijzigd door THIJZEL op 18-05-2004 16:14 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Misschien half offtopic, maar ik heb ooit een class geschreven in PHP voor lezen én schrijven naar INI files. Er is namelijk geen PHP functie waarmee je kan schrijven naar een INI file.

ini class

Acties:
  • 0 Henk 'm!

  • THIJZEL
  • Registratie: Januari 2001
  • Niet online
als ik met ultraedit ff hex mode aanzet en ik kijk bij de goede regels in mijn ini file, dan staat er aan het eind van elke regel een character 10 en 13. Op de regels geschreven door mijn scriptje staat er alleen een character 10 (0A).

Acties:
  • 0 Henk 'm!

  • THIJZEL
  • Registratie: Januari 2001
  • Niet online
Verwijderd schreef op 18 mei 2004 @ 16:31:
Misschien half offtopic, maar ik heb ooit een class geschreven in PHP voor lezen én schrijven naar INI files. Er is namelijk geen PHP functie waarmee je kan schrijven naar een INI file.

ini class
Ja ziet er op zich goed uit, :p misschien ga ik die toch gebruiken..

Acties:
  • 0 Henk 'm!

  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 19-09 13:37
THIJZEL schreef op 18 mei 2004 @ 16:14:
maar het probleem dat ik nu heb is dat ik wanneer ik een "\n" aar een bestand schrijf, dat ik,wanneer ik het bestand open in notepad, blokjes ipv nieuw regels in mijn output krijg. ( kan hier niet de output posten want hier krijg ik wel nieuwe regels..) :P
Gebruik i.p.v. \n \r\n (of was het \r\n ...? Nou ja, een keer proberen zegt genoeg :) )

Full-stack webdeveloper in Groningen

Pagina: 1