Avatar billede tatsudoshi Nybegynder
06. februar 2006 - 14:59 Der er 12 kommentarer og
1 løsning

eval af html fil

Hej.

Jeg har en php klasse, hvor jeg har en funktion der laver en eval() på en streng. Strengen er en html fil indlæst i en variabel vha. file_get_contents().

I html filen skriver jeg fx. { $this->function() }, for at kalde en funktion.

Nu skal jeg bruge den include() funktion der er i php, men hele php koden bliver bare udskrevet. Altså det der er mellem {} tegnende.

Hvordan kalder jeg php definineret funktioner?
Avatar billede jih Nybegynder
06. februar 2006 - 15:06 #1
du kan ikke bruge php funktioner i en html fil.. du bliver nødt til at gemme den som .php, el.lign.. uden så at det er i en frame..?
Avatar billede tatsudoshi Nybegynder
06. februar 2006 - 15:28 #2
det gør jeg heller ikke. hvis du havde læst min forklaring, beskriver jeg netop at jeg smider hele html koden ind i en streng som der bliver lavet en eval() på. Dvs. at al php kode der er i html filen, bliver bytte ud med det de enkelte funktioner retuner.
Avatar billede tatsudoshi Nybegynder
06. februar 2006 - 15:38 #3
en file_get_contents() i stedet for include() ville nok være bedre, da den fil jeg vil indkludere er en html fil. Men selvom jeg prøver at kalde den funktion, bliver den stadig bare udskrevet som om det var en tekst streng.
Avatar billede jih Nybegynder
06. februar 2006 - 15:47 #4
altså .. undskyld, men jeg forstår ikke helt spørgsmålet.. hovedspørgsmålet ser ud til at være "Hvordan kalder jeg php definineret funktioner?", og der ville svaret være noget lignende med: "minFunktion();" .. hvis det ikke er det svar du ønsker, tror jeg desværre ikke jeg kan hjælpe.. =/ undskyld min konstante trang til at lægge svar før jeg læser spørgsmålet godt og grundigt..
Avatar billede erikjacobsen Ekspert
06. februar 2006 - 15:50 #5
Jeg forstår heller ikke, hvad du mener med spørgsmålet. Men måske er svare at du ikke skal bruge    { $this->function() }      men    <? $this->function() ?>  i den htmlfil du inkluderer.
Avatar billede tatsudoshi Nybegynder
06. februar 2006 - 15:58 #6
webpsycho: ok, med 'php defineret funktion' mener jeg funktioner der er i php og derfor ikke funktioner jeg selv har lavet. Jeg skal bruge file_get_contents(), men da den ikke har $ foran, kan jeg ikke skrive { $this->.. } for at kalde den. Man kalder fx. GET variabler med $_GET[], men jeg kan ikke finde nogen dokumenation på hvordan man kalder php funktioner.

erikjacobsen: Måske. Har ikke prøvet. Men tror ikke det vil hjælpe, da det ville indføre en startende php tag midt i en, i forevejen startet, php kode. Altså <?php ..kode.. <? $this->function() ?> ..kode.. ?>. Det kan man vidst ikke.
Avatar billede tatsudoshi Nybegynder
06. februar 2006 - 16:00 #7
PS. spørgsmålet går heller ikke på om det skal være {} eller noget andet, for den del fejler intet. Det virker med alle mine egne defineret funktioner. Problemet er helt alene, hvordan jeg kalder php defineret funktioner, som fx. file_get_contents(), så eval() opfatter den og dermed bliver evalueret.
Avatar billede tatsudoshi Nybegynder
06. februar 2006 - 16:03 #8
Jeg kunne måske lige tilføje, at hele formålet med dette cirkus, er at jeg vil normalt ville bruge <!-- #include virtual="" --> til at smide menuen ind på siden. Da en #include bliver læst FØR php kompilere html kode, kan jeg ikke bruge denne metode. Jeg har ikke kunde finde nogen bedre metode pt.
Avatar billede coderdk Praktikant
06. februar 2006 - 21:28 #9
Er du sikker på at eval() laver noget ved det du smider den ind i? Er det en HTML fil? eval() antager at det er PHP... Har du kigget på kommentarerne på http://dk.php.net/eval ?
Avatar billede coderdk Praktikant
06. februar 2006 - 21:31 #10
Altså mere eller mindre bare: eval( '?>' . file_get_contents( 'din_html_fil_med_php.txt' ) );
Avatar billede tatsudoshi Nybegynder
07. februar 2006 - 09:41 #11
docerdk: det er lige præcis dit sidste forslag jeg benytter mig af. Om filens ext. er .txt eller .html betyder intet for eval(). Som sagt køre jeg funktionen i en klasse, dvs. jeg koder php OO (Objekt Orienteret). Så da eval() funktionen bliver kørt inde i klassen er den selv en del af en <?php ?> kode, derfor virker det med en ren html/txt fil.

Men for at skære igennem:
Det jeg mangler, er en måde at lave #include på. Det behøver ikke være #include der bliver brugt, jeg skal bare have den funktionalitet.
Meget gerne høre forslag til at opnå dette.
Avatar billede coderdk Praktikant
07. februar 2006 - 09:54 #12
Du kan ikke bruge php's include/require?
Avatar billede tatsudoshi Nybegynder
08. februar 2006 - 10:36 #13
Nej det har jeg prøvet. Men har fundet ud af noget:

Når man bruger eval() og kalder funktioner i txt/html filen, SKAL man omgive funktionskaldet med {}, som jeg havde gjort. Der må bare IKKE være mellemrum mellem { og første tegn og } og sidste tegn..

Jeg prøvede kort at kalde file_get_contents() med {} rundt om uden mellemrum, men det blev ikke evalueret. Så jeg tror ikke man kan kalde php indbyggede funktioner på denne måde. Jeg lagde bare file_get_contents() i min egen funktion og vupti, så kan jeg kalde html filer, inden i andre html filer. Det bliver lidt rekursivt, men da det drejer sig om et meget lille antal filer pr. side, betyder det intet for serverens hukommelse.

Håber nogen kan bruge det :)
Og tak for jeres tid og hjælp.
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