Avatar billede snie97 Nybegynder
23. august 2005 - 09:32 Der er 8 kommentarer og
1 løsning

Inkludere fil i output fra database

Jeg er ved at lave et mini-cms til mit site. I den forbindelse vil jeg gerne kunne lave nogle moduler og derefter hente dem ind på mine sider som er gemt i en database.

Jeg forestiller mig noget med at man i databasen skriver fx. [[[phpscript.php]]] dette skal være et signal til index.php eller hvad siden der outputter cms-siderne nu hedder, til at phpscript.php skal inkluderes på det punkt.

Men man kan jo ikke bare skrive str_replace() da den så bare vil outputte "include("phpscript.php");" i stedet for rent faktisk at inkludere scriptet.

Findes der en løsning på dette?
Avatar billede bromer Nybegynder
23. august 2005 - 09:37 #1
Du bør splitte din fil hver gang du møder [[[name]]] mønsteret og så imellem dem inkludere filen.
Avatar billede snie97 Nybegynder
23. august 2005 - 09:47 #2
Det skal vel gøres med noget regular expressions så? Er der nogen der kan give lidt lærdom fra sig mht. det, for det er noget af det der halter i mit php-kundskab...
Avatar billede bromer Nybegynder
23. august 2005 - 09:49 #3
Hvis jeg havde tiden til det ville jeg gerne. Hvis folk ikke har gjort det senere i dag skal jeg nok smide noget kode.
Avatar billede jakobdo Ekspert
23. august 2005 - 10:10 #4
Et super godt program til at lære RegExp er RegexpBuddy mener det findes på www.regexpbuddy.com
Avatar billede jakobdo Ekspert
23. august 2005 - 10:11 #5
En regexp løsning kunne være:
$nytekst = preg_replace('/\\[\\[\\[([a-z_-]+\\.php)\\]\\]\\]/', 'include("$1");', $tekst);
Avatar billede snie97 Nybegynder
23. august 2005 - 10:24 #6
jakobdo, den går ikke...

din løsning indsætter bare include("$1"); i teksten, og det jeg vil er at inkludere $1...
Avatar billede bromer Nybegynder
23. august 2005 - 10:43 #7
Det kan ikke løses med en replace. Det skal laves ved at splitte strengen og inkludere filerne imellem det andet output.
Avatar billede snie97 Nybegynder
23. august 2005 - 11:09 #8
bromer, kan det tænkes at det kan gøres ved at definere include-filerne som fx. ||[include.php]|| og så splitte strengen ved ||, for derefter at teste alle punkterne i det array man får om de passer med syntaxen [filnavn.ext], for derefter at includere filen?.

Så er det lige før jeg tror jeg har en løsning :)
Avatar billede snie97 Nybegynder
23. august 2005 - 11:39 #9
Så fandt jeg en løsning...

I får lige scriptet her:
<?
$minVariabel = "bla bla bla... og så sagde jeg.... lalalalala... ||###index.php###|| men det også fordi bordet er firkantet";
$mvSplit = explode("||", $minVariabel);
for ($i = 0; $i<count($mvSplit); $i++) {
    if (ereg("^###", $mvSplit[$i])) {
        include(substr($mvSplit[$i], 3, -3));
    }
    else {
        print $mvSplit[$i];
    }
}

?>

og lortet virker... så kan det ikke være bedre...
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