Avatar billede Slettet bruger
19. maj 2004 - 16:02 Der er 12 kommentarer

Parse kode som læses ind fra fil

Hej!

Jeg læser en bund og top ind i mit PHP dokument med nedenstående kode:

if(function_exists("file_get_contents")) {
echo stripslashes(file_get_contents('cms_skabeloner/' . $row_design['bund']));
} else {
echo stripslashes(implode('', file('cms_skabeloner/' . $row_design['bund'])));
}

Det fungerer fint med HTML, men den evt. PHP kode som ligger i filen bliver blot udskrevet, og jeg vil gerne parse den.

Den er altid indkapslet af <?PHP og ?> hvis det kan hjælpe.

Et eksempel på koden kan ses herunder:

</td><td valign="top" width="200" nowrap><?PHP echo cm3('afstemning'); ?></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table border="0" width="100%" bgcolor="#000000" cellspacing="0" cellpadding="0">
  <tr>
    <td width="100%"> </td>
  </tr>
</table>
</body>
</html>
Avatar billede henriktha Nybegynder
19. maj 2004 - 16:08 #1
Har du husket at din fil skal hedde fil.php og ikke fil.html ??
Avatar billede stalle Nybegynder
19. maj 2004 - 16:09 #2
Avatar billede Slettet bruger
19. maj 2004 - 16:12 #3
Ja, min fil hedder bund8.php og det er ligegyldigt hvad den hedder, eftersom jeg bare læser indholdet af den.

Det jeg vil svarer til at include() filen, men eftersom den først skal køres igennem mit eget system duer det ikke. Jeg skal bearbejde den rå fil lidt før den skal vises :/

Min funktion cm3 er ret simpel, den returnerer bare filen der skal includes:

function cm3($hvad) {

if($hvad == 'menu') {
return 'fun_dokumenter.php';
}

if($hvad == 'afstemning') {
return 'fun_afstemning.php';
}

}
Avatar billede Slettet bruger
19. maj 2004 - 16:12 #4
Glem alt efter "bearbejde den rå fil lidt før den skal vises :/"

Det er vel sagen ligegyldig.
Avatar billede Slettet bruger
19. maj 2004 - 17:06 #5
Og nej, eval() kan ikke lide HTML koder og <? tegn så det går ikke. eval() kan kun arbejde med ren PHP.
Avatar billede sukos Juniormester
19. maj 2004 - 17:18 #6
vrøvl nan!
Avatar billede Slettet bruger
19. maj 2004 - 18:14 #7
Bare for sjov. Prøv:

eval( '?>' . stripslashes(file_get_contents('cms_skabeloner/' . $row_design['bund'])) . '<?php');

henriktha: Det er kun vigtigt for selve det script, som brugeren direkte beder om. For inkluderede filer er det ligegyldigt hvad de hedder. (Men det kan nu være smart nok at kalde dem .php)
Avatar billede Slettet bruger
23. maj 2004 - 10:32 #8
Hej og beklager svartiden. Eksperten gider ikke sende mails til mig for tiden :/

Jeg har muligvis sprunget lidt hurtigt over eval() men har prøvet at få det til at spille, mit eksempel herunder giver en fejl:



kode.php (den fil der skal includes/parses):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
</head>

<body>

<?
echo "hej";
?>


</body>
</html>


test.php (den fil der skal inkludere mine sider alt efter skabelon):

<?
if(function_exists("file_get_contents")) {
$side = stripslashes(file_get_contents('kode.php'));
} else {
$side = stripslashes(implode('', file('kode.php')));
}

eval($side);

?>

Men jeg får en fejl der ser sådan her ud:

Parse error: parse error, unexpected '<' in d:\html\test2.php(17) : eval()'d code on line 1
Avatar billede Slettet bruger
23. maj 2004 - 10:33 #9
sandbox> Din kode giver samme fejl bare i en anden linie
Avatar billede Slettet bruger
23. maj 2004 - 16:52 #10
Jeg har lige afprøvet, og følgende lille script virker hos mig. Jeg var nødt til at bruge <?php i stedet for bare <? inde i strengen for at det virkede.

<?php

$kode='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
</head>

<body>

<?php
echo "hej";
?>


</body>
</html>
';


eval('?>' . $kode . '<?php');

?>
Avatar billede sukos Juniormester
23. maj 2004 - 18:06 #11
Så skal man bare lige huske at escape ' ellers får man fejl!
Avatar billede Slettet bruger
23. maj 2004 - 18:28 #12
Ja, men det var jo heller ikke meningen at strengen skulle erklæres direkte i scriptet. Det var bare eksempelkode, hvor det er lettere at have det hele samlet i en fil. (Og der var ikke nogen ' i kodestrengen.) Når kodestrengen hentes fra en ekstern fil (eller fra database) så er det ikke nødvendigt at escape ' - men man skal være opmærksom på at PHP måske er opsat til at gøre det automatisk.
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