Avatar billede danino Nybegynder
04. februar 2004 - 12:21 Der er 9 kommentarer og
1 løsning

Reg. exp.

Jeg har et problem. Jeg har hevet indholdet at en fil ud til en string ($fstring).
Jeg skal nu udskrive alle i filen definerede konstanter, og straks tænkte jeg regular expressions.
Jeg gør så følgende:
<?php
$filename = "da.php";
$fd = fopen($filename, "r") or die("Can't open $filename");
$fstring = fread($fd, filesize($filename));
ereg("^define\(\"([a-z]+)\".", $fstring, $constants);
echo $constants;
?>
men jeg kan ikke ligefrem påstå at det virker. Jeg prøver at lægger alt der er mellem define(" og " ud i variablen $constants, men hvad gør jeg galt. Og er der evt. en bedre måde at løse problemet på? Og hvordan viser jeg så senere konstanterne?
Avatar billede erikjacobsen Ekspert
04. februar 2004 - 13:30 #1
Prøv den her:

<?php
define("FILENAME","consta.php");
  define("Test",7913);
$fd = fopen(FILENAME, "r") or die("Can't open ".FILENAME);
$fstring = fread($fd, filesize(FILENAME));
preg_match_all("/define\(\"(.+?)\",(.+?)\)/mi", $fstring, $constants);
print_r($constants);
?>
~
Avatar billede tefcke Nybegynder
04. februar 2004 - 13:43 #2
Vær opmærksom på, at man både kan bruge " og ' til strenge.
Ex.
define("Test",7913);
define('Test',7913);

Der skal lige sørges for at begge typer strenge kan forkomme!
Avatar billede tefcke Nybegynder
04. februar 2004 - 13:45 #3
preg_match_all("/define\((\"|\')(.+?)\(\"|\'),(.+?)\)/mi", $fstring, $constants);
Avatar billede danino Nybegynder
04. februar 2004 - 14:14 #4
Hm... Ja, Eriks kommentar er den der har hjulpet mig mest på vej... Men jeg skal ikke kunne sige om tefckes reg. exp. måske skulle kunne gøre det samme...
Avatar billede erikjacobsen Ekspert
04. februar 2004 - 15:13 #5
Det er nemlig rigtigt, at der ikke kun kan stå "...", men også '...'.
Nu ved spørgeren måske hvordan det står, og skal kun bruge "..."

Men ellers kan der jo stå hvad som helst

$dyr="heste";
define($heste."bøf")="lækker mad";
Avatar billede ztyxx Nybegynder
04. februar 2004 - 15:14 #6
hvor kommer $heste fra ;-)
Avatar billede danino Nybegynder
04. februar 2004 - 15:25 #7
godt spørgsmål ztyxx :)
og ja, jeg ved at der altid vil stå "...."
Men går ud fra at du som sædvanlig ikke vil have nogen points erik, ellers så læg et svar...
Avatar billede ztyxx Nybegynder
04. februar 2004 - 21:16 #8
jeg har talt mine heste, de står i folden, så det er ikke mine :-)
Avatar billede erikjacobsen Ekspert
04. februar 2004 - 21:43 #9
Ingen heste til mig, tak.
Avatar billede danino Nybegynder
05. februar 2004 - 11:04 #10
Nå men så lukker jeg selv...
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