/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Split
Fra : Jimmy


Dato : 25-12-03 17:14

Hej

Jeg har et site med en masse variabler i en tekstfil.
Admins skal have mulighed for at redigere i denne fil på en måde mere simpel
end at skrive direkte i den.

Filen har følgende syntaks:

$Menu_Ornament = "<img src='/pics/level_0.gif'>";
$MySQL_User = "user";
$MySQL_Pass = "pass";

Det er desværre ikke muligt at splitte på =, da dette kan indgå i
værdilisten.

Kan I finde på en sikker måde at løse problemet på?

Alternativt kunne jeg have en dummy-config, hvor lighedstegnet mellem
variabel og værdi er erstattet af en række tegn man kan splitte sikkert på.

Mvh
Jimmy



 
 
Per Thomsen (25-12-2003)
Kommentar
Fra : Per Thomsen


Dato : 25-12-03 18:01

Jimmy wrote:
> Hej
>
> Jeg har et site med en masse variabler i en tekstfil.
> Admins skal have mulighed for at redigere i denne fil på en måde mere simpel
> end at skrive direkte i den.
>
> Filen har følgende syntaks:
>
> $Menu_Ornament = "<img src='/pics/level_0.gif'>";
> $MySQL_User = "user";
> $MySQL_Pass = "pass";
>
> Det er desværre ikke muligt at splitte på =, da dette kan indgå i
> værdilisten.

Du kan f.eks. anvende strpos i samarbejde med substr

function extractLine($line) {
   $firstEqSign = strpos($line, '=');
   $name = substr($line, 0, $firstEqSign);
   $value = substr( $line, $firstEqSign+1);
   return array($name,$value);
}

Så kan du bruge extractLine funktionen i stedet for split.

MVH Per Thomsen,
http://www.pert.dk/


Jimmy (25-12-2003)
Kommentar
Fra : Jimmy


Dato : 25-12-03 19:13


"Per Thomsen" <pert@pert.dk> wrote in message
news:3feb17c1$0$9730$edfadb0f@dread14.news.tele.dk...
>
> Du kan f.eks. anvende strpos i samarbejde med substr
>
> function extractLine($line) {
> $firstEqSign = strpos($line, '=');
> $name = substr($line, 0, $firstEqSign);
> $value = substr( $line, $firstEqSign+1);
> return array($name,$value);
> }
>
> Så kan du bruge extractLine funktionen i stedet for split.


Hej Per

Smart - Gør alt det jeg ønsker på få linier.

Tak,
Jimmy



Peter Brodersen (25-12-2003)
Kommentar
Fra : Peter Brodersen


Dato : 25-12-03 19:39

On Thu, 25 Dec 2003 17:14:02 +0100, "Jimmy"
<nyhedsgruppe2@get2net.danmark> wrote:

>Jeg har et site med en masse variabler i en tekstfil.
>Admins skal have mulighed for at redigere i denne fil på en måde mere simpel
>end at skrive direkte i den.

Jeg kan anbefale at bruge simple ini-filer. Kig på funktionen
parse_ini_file() :
http://dk2.php.net/manual/en/function.parse-ini-file.php

Dermed undgår man også at have PHP-kode i konfigurationsfilen. Plus at
man vælger et passende værktøj til formålet (i min mening), i stedet
for manuelt at skulle fedte med at parse filer.

Hvis du vil beholde dit setup, så:

> $Menu_Ornament = "<img src='/pics/level_0.gif'>";
> $MySQL_User = "user";
> $MySQL_Pass = "pass";
>
>Det er desværre ikke muligt at splitte på =, da dette kan indgå i
>værdilisten.

Både explode(), split() og preg_split() indeholder en limit, som er
hvad, du leder efter.

http://dk2.php.net/explode
http://dk2.php.net/split
http://dk2.php.net/preg_split

Fx:
list($key,$value) = explode("=",$line,2);

Evt. med lidt mere fleksibilitet med mellemrum omkring lighedstegnet,
hvis du ikke efterfølgende vil fedte med trim():

list($key,$value) = preg_split('/\s*=\s*/',$line,2);

--
- Peter Brodersen

Ugens sprogtip: at køre (og ikke at kører)

Jimmy (25-12-2003)
Kommentar
Fra : Jimmy


Dato : 25-12-03 21:10


"Peter Brodersen" <usenet@ter.dk> wrote in message
news:bsfash$n35$1@dknews.tiscali.dk...
> On Thu, 25 Dec 2003 17:14:02 +0100, "Jimmy"
> <nyhedsgruppe2@get2net.danmark> wrote:
>
> >Jeg har et site med en masse variabler i en tekstfil.
> >Admins skal have mulighed for at redigere i denne fil på en måde mere
simpel
> >end at skrive direkte i den.
>
> Jeg kan anbefale at bruge simple ini-filer. Kig på funktionen
> parse_ini_file() :
> http://dk2.php.net/manual/en/function.parse-ini-file.php


Smart - Jeg er nok stadig inficeret af at have programmeret ASP i fire-fem
år, hvor man altid laver alting selv...


> Både explode(), split() og preg_split() indeholder en limit, som er
> hvad, du leder efter.

Arch ja!
Godt set.

Tak for det meget detaljerede og informative svar.

Mvh
Jimmy



Thomas Finnerup (26-12-2003)
Kommentar
Fra : Thomas Finnerup


Dato : 26-12-03 11:34

On Thu, 25 Dec 2003 17:14:02 +0100, "Jimmy"
<nyhedsgruppe2@get2net.danmark> wrote:

> Det er desværre ikke muligt at splitte på =, da dette kan indgå i
> værdilisten.

Du kan få split() (eller explode(), som i dette tilfælde er mere
optimalt) til maksimalt at dele linien op i 2 dele:

list($Key, $Value) = explode("=", $Line, 2);


Venligst
Thomas

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408934
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste