Ergebnis 1 bis 3 von 3
  1. #1
    Fortgeschrittener
    Registriert seit
    26.10.2008
    Beiträge
    31

    Standard eval(); ausführen mit .php dateien

    Hallo FH'er,

    ich benutze die eval(); funktion um inhalte einer .php datei zu laden und dann auszuführen. Das Problem alle php dateien haben irgendwo ein <?php, an anfang oder irgendwo später, stehen. Doch die funktion eval(); lässt ein "<?php" nicht zu den dann würd er den php code nicht ausführen.

    Meine erste Idee war es das erste <?php mit nichts zu ersetzen, damit der code trozdem funktioniert. Doch das Problem ist das es einen Php error geben wird wenn z.B folgendes mit eval(); versucht wird:

    Code:
    <?php
        eval('<i>Html</i> <?php echo 'Test';);
    ?>
    ist ja klar! Denn wenn man sich vorstellt das <?php vor dem echo entfernt wurde geht der code nicht mehr. Irgendwo muss <?php ja anfangen. Doch ich möchte gerne unabhängig von der datei(entweder sie fängt mit html oder php an), den inhalt einer php datei einlesen und mit eval ausführen.

    Wie kann ich das Problem lösen?

  2. #2
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Eine Möglichkeit wären Regular Expressions (RegEx)

    Ich habe folgenden Code jetzt mal auf die Schnelle "zusammengeschustert".
    Erwarte also bitte nicht soviel davon... der Code ließe sich z.B. austricksen, wenn man soetwas parsen möchte:
    Code:
    <?php
    echo '?>'; // <----- hier wird abgeschnitten
    
    echo 'TEST!'; // wird nie erreicht
    ?>
    Naja, was soll's!

    Hier ist der Code:
    Code:
    <?php
    
    $data = file_get_contents('parseme.php');
    
    $phpcode = null;
    if (preg_match_all('|\<\?php(.*)\?\>|imSUs', $data, $matches) > 0)
    {
        foreach($matches[1] as $index => $match)
        {
            $phpcode .= "${match}\n";
        }
    }
    
    // echo $phpcode;
    eval($phpcode);
    
    ?>
    Mit dieser Datei (parseme.php):
    Code:
    <html>
    
    <?php
    
    echo "Das";
    
    ?>
    
    <i>HTML 1</i>
    
    <?php echo " ist"; ?>
    
    <u>HTML 2</u>
    
    <?php echo " ein"; ?>
    
    <?php echo " TEST!\n";
    ?>
    
    </html>
    erhalte ich folgende Ausgabe:
    Code:
    C:\Users\BlackBerry\Desktop>php a.php
    Das ist ein TEST!
    Das Prinzip funktioniert also.
    Ich hoffe das hilft dir weiter!


    mfG. BlackBerry

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  3. #3
    Fortgeschrittener
    Registriert seit
    26.10.2008
    Beiträge
    31

    Standard

    wow das hat mir wirklich sehr geholfen^^
    vielen dank

    achja ich wusste garnicht das man php code per console laufen lassen kann^^
    danke auch dafür!

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •