Avatar billede strahd Nybegynder
04. november 2004 - 09:27 Der er 16 kommentarer

Problem med af afvikling af php kode i template.

Vi har lavet et template system i php hvor vi via file_get_content inkludere en fil med noget php og html kode.
Problemet er at den ikke afvikler php kode som vi får ind med file_get_content.
Er det os der er dumme eller er det en sikkerhedsforanstaltning i php som gør at file_get_content ignorere php kode?
Vi har prøvet med file og fileread og fopen men med samme resultat og kan ikke finde noget om problemet på php.net eller her på eksperten.
Avatar billede erikjacobsen Ekspert
04. november 2004 - 09:29 #1
prøv med
    include("dinfil.php");
Avatar billede strahd Nybegynder
04. november 2004 - 09:33 #2
Problemet er ikke include på den måde. Vi skal have læst indholdet ind i en streng for derefter lave nogle replaces og så udskrive den...
Avatar billede erikjacobsen Ekspert
04. november 2004 - 09:36 #3
Hvis det er vilkårligt php-kode, så er der ikke andet for end at bruge include
Du kan fx

<?php

function callback($buffer)
{
  // replace all the apples with oranges
  return (str_replace("apples", "oranges", $buffer));
}

ob_start("callback");
include("dinfil.php");
ob_end_flush();

?>
Avatar billede erikjacobsen Ekspert
04. november 2004 - 09:37 #4
(og det eksempel er faktisk stort set fra http://php.net/ob_start )
Avatar billede strahd Nybegynder
04. november 2004 - 09:41 #5
Tak.. Kan du ikke lige poste et svar istedet for en kommentar så du kan få dine point.
Avatar billede erikjacobsen Ekspert
04. november 2004 - 09:42 #6
Nej tak, jeg samler slet ikke på point.

Men en anden gang så skriv hvad det er du skal bruge det til i spørgsmålet. ;)
Avatar billede strahd Nybegynder
04. november 2004 - 09:44 #7
Iorden. skal jeg nok huske.. men endnu engang tak for hjælpen.
Avatar billede bojo Nybegynder
04. november 2004 - 10:16 #8
hmm - file_get_contents burde nu virke, prøv dette, virker kun hvis  fopen wrappers er enabled da jeg bruger http, men det virker med lokale filer ( templates )

<?php

$t = "<BASE href='http://eksperten.dk/'>".file_get_contents( "http://eksperten.dk/spm/557789" )."</BASE>";
$t = str_replace( "bruge include", "bruge include eller file_get_contents :-) ", $t );
echo $t;

?>
Avatar billede bojo Nybegynder
04. november 2004 - 10:19 #9
ups - nej, mig der er dum ( igen ) sorry
Avatar billede bojo Nybegynder
04. november 2004 - 11:18 #10
det kan vel løses med det her, indbyg selv fejlhåndtering
<?
$t = file_get_contents( "rod.php" );

// lav det replace i $t du skal have

$fh=fopen("tmp.php", "w" );
fwrite($fh, $t );
fclose($fh);
include "tmp.php";
unlink( "tmp.php" );

?>
Avatar billede erikjacobsen Ekspert
04. november 2004 - 11:22 #11
Men du synes vel heller ikke det er en god løsning, vel? ;)

Problemet er jo så lige at få lavet erstatningerne i den genererede HTML, hvilket
min kodestump jo løser ganske fortrinligt.
Avatar billede bojo Nybegynder
04. november 2004 - 11:27 #12
jo din løsning er perfekt, med mindre der er noget php eller lign der skal ændres før siden vises.
Avatar billede erikjacobsen Ekspert
04. november 2004 - 11:30 #13
Ja, med mindre ... men det er jo ikke det spørgeren har behov for.

Jeg vil gerne opfordre spørgeren til at lukke spørgsmålet: svar selv, accepter eget svar.
Avatar billede bojo Nybegynder
04. november 2004 - 11:34 #14
Det siger spørgeren faktisk ikee noget om, kun at der skal replaces, men pyt nu
Avatar billede erikjacobsen Ekspert
04. november 2004 - 11:42 #15
Jo, det gør spørgeren, hvis du gad læse hvad det står. Men helt enig: pyt med det.
Avatar billede strahd Nybegynder
04. november 2004 - 12:02 #16
Lukket
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