Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [PHP] leggere tra <?php e ?> come i browser

    Salve, è possibile creare una pagina in PHP che sia in grado di "leggere" il contenuto dei tag <?php e ?> di un'altra pagina già eseguita?

    Cerco di spiegarmi meglio con degli esempi:

    Codice pagina1.php:

    <html>
    ...
    <?php
    $contenuto_pagina2 = strip_tags(funzione(file_get_contents("path/to/pagina2.php")));
    ...
    ?>
    ...
    </html>


    Codice pagina2.php:

    <html>
    ...
    <?php
    $testo = "ciao, bla bla bla";
    echo $testo;
    ...
    </html>

    Quello che vorrei è che la variabile $contenuto_pagina2 contenga il "solo testo" della pagina "pagina2.php", tra cui il contenuto della variabile $testo... un po' come fanno i motori di ricerca... :master:

    Spero per avervi fatto capire cosa voglio fare...

    ciao e grazie anticipatamente per eventuali risposte,
    fede089
    by fede089

  2. #2
    puoi fare una ciclo che, dopo aver letto il contenuto del file PHP e averlo memorizzato in una variabile ($stringa_file), cerca la posizione della stringa <? con la funzione strpos() e poi cerca la posizione della chiusura ?>

    poi con substr() estrai la parte di testo che ti serve:

    http://it2.php.net/manual/it/function.strpos.php
    http://it2.php.net/manual/it/function.substr.php

    ad occhio, qualcosa tipo:

    Codice PHP:
    $php_array = array();
    $can_exit = false;
    do {
       $pos1 = strpos($stringa_file, '<?');
       $pos2 = strpos($stringa_file, '
    ?>');
       if (!empty($pos1) && $pos2>$pos1)
          $php_array[] = substr($stringa_file, $pos1, $pos2-$pos1);
       else
          $can_exit = true;
    } while (!$can_exit);
    a questo punto $php_array dovrebbe contenere tutto il codice PHP.
    non l'ho testato, fammi sapere se va.

  3. #3
    Lo script che mi hai presentato mette le parti in php di un file in un array, ok. Ma, magari sempre all'interno dell'array o in un'altra variabile, come si può fare per renderlo eseguito? :master:

    Continuando il tuo script:
    codice:
    <?php
    for($i=0; $i<count($php_array); $i++) {
    $php_array[$i] = esegui_php($php_array[$i]);
    };
    ?>
    In modo da avere:
    codice:
    $php_array[0] == 'ciao'
    Al posto di:
    codice:
    $php_array[0] == '<?php echo "ciao" ?>'
    Ciao e grazie per l'attenzione
    by fede089

  4. #4
    up
    by fede089

  5. #5
    prova con la funzione eval(), per interpretare come PHP il codice presente nell'array:
    http://it2.php.net/manual/it/function.eval.php

  6. #6
    OK, ci sono quasi, eval() è proprio ciò che cercavo, grazie OhMyGod!

    Ma ho notato che eval(), quando utilizzata, stampa sullo schermo il PHP eseguito, questo fatto è scritto anche sul manuale e dice di utilizzare queste funzioni:

    http://php.it/manual/it/ref.outcontrol.php

    bene, io le ho guardate, ma non ho capito come integrarle nel seguente script: :master:
    codice:
    <?php
    $php = 'echo "ciao";';
    $php_eseguito = eval($php);
    echo "codice php:
    \n";
    echo $php_eseguito;
    ?>
    eval() stampa subito il php eseguito!
    by fede089

  7. #7
    Ho risolto definitivamente!

    Ho creato il seguente script:
    codice:
    <?php
    $php = 'echo "ciao";';
    ob_start();
    eval($php);
    $php = ob_get_contents();
    ob_end_clean();
    echo "ecco il mio echo:
    \n".$php;
    ?>
    Funziona!
    Secondo voi può andare bene o devo modificarlo?

    Ma per ora son contento!

    grazie OhMyGod!

    by fede089

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.