Avatar billede danino Nybegynder
04. februar 2004 - 16:42 Der er 3 kommentarer og
1 løsning

Endnu en reg. exp.

Jeg har 3 variabler:
$fstring - indeholder en fil, som en streng
$constant_name - indeholder streng 1
$constant_value - indeholder streng 2

Jeg vil gerne have erstattet i $fstring, der hvor der står:
define("$constant_name" , "værdi");
med
define("$constant_name" , "$constant_value");
Altså med ord:
Der hvor der defineres en konstant, som er det samme som streng 1 (nemlig $constant_name), skal denne konstant sættes til værdien af $constant_value.
Dette skal vel ske med en reg. exp., og da jeg ikke kan finde ud af dem endnu, tænkte jeg nogen her kunne hjælpe?
Avatar billede Slettet bruger
05. februar 2004 - 02:27 #1
Hvis der står "værdi" (altså en fast streng, som ikke skifter), kan str_replace klare det. Ellers er det nok smartest med en preg_replace, som er langsommere men mere alsidig.

str_replace-kode:
$nyfstring=str_replace("define(\"$constant_name\" , \"værdi\");" , "define(\"$constant_name\" , \"$constant_value\");" , $fstring);

preg_replace-kode:
$search='/define\(\s*"' . preg_quote($constant_name) . '"\s*,\s*[^\)]\);/';
$replace="define(\"$constant_name\" , \"$constant_value\");";
$nyfstring=preg_replace($search, $replace, $fstring);

Preg_replace-koden er også mere fleksibel med antal mellemrum.
Avatar billede danino Nybegynder
05. februar 2004 - 11:03 #2
Jeg ved ikke om dit svar virker sandbox, for jeg havde i mellemtiden fundet en (anden) løsning, og har ikke fået lukket spørgsmålet. Men da du har brugt tid på at lave mig et svar, skal du da have points alligevel :)
Avatar billede Slettet bruger
05. februar 2004 - 13:56 #3
Takker.
Det beviser jo bare, at der er altid mere end én måde at gøre tingene på.
Avatar billede danino Nybegynder
05. februar 2004 - 14:21 #4
Ja... Men jeg kan da sige, at min løsning meget ligner din :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester