Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Eval() su alcune parti di stringa

    Salve a tutti,

    Io ho una stringa del genere:

    $mia_stringa = ' codice html <?php echo "ciao a tutti"; ?> altro codice html <?php echo "di nuovo ciao a tutti"; ?> ancora altro codice html ';

    Vorrei prendere solo le parti inculse nei tag del php <?php ... ?> e sottoporli alla funzione eval() in modo che quando stampo la stringa quelle parti siano state elaborate.

    Ecco come dovrebbe venire fuori l'output uan volta stampata la $mia_stringa :


    codice html ciao a tutti altro codice html di nuovo ciao a tutti ancora altro codice html

    Come posso farlo?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    O usi una serie di join e split (poco funzionale e complicato) o dei preg_match con regex, più semplice.


  3. #3
    Ciao e grazie per la risposta.

    Il primo modo mi ha fatto già venire il malditesta anche perchè la mia stringa ha centinaia di parti in PHP..

    Per il secondo modo ho letto qualcosa ma non sono molto esperto. Sai indicarmi per caso qualche script già fatto che a partire da una stringa isola le parti in php e le valorizza?

    Grazie

  4. #4

  5. #5
    Ho trovato questo esempio e ho capito abbastanza bene come sostituire dei pezzi facendone l'eval.


    Codice PHP:
    <?php  

    $string 
    'This is the {_FOO_} bought to you by {_BAR_}'

    $template_vars=array("FOO" => "The PHP Way""BAR" => "PHPro.orG"); 

    $string preg_replace("/{_(.*?)_}/ime""\$template_vars['$1']",$string); 

    echo 
    $string;  
    ?>
    Non riesco però ad applicarlo al mio caso. Ossia prendere tutto ciò che sta dentro <?php ... ?> e fare l'eval..

  6. #6
    Sono ad un cm dalla soluzione ma mi manca un pezzetto..

    Codice PHP:
    <?php 

    $miastringa
    ='html inizio  <?php echo"primo php"; ?>  html centro  <?php echo"secondo php"; ?> html fine';  

    $dati preg_replace("/\<\?php(.*?)\?>/e"'asd'$miastringa);  

    echo 
    $dati;

    ?>
    Questo mi da l'output:
    html inizio asd html centro asd html fine

    Ora al posto della parola asd vorrei inserire il codice php su cui la funzione farà eval()

  7. #7
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    codice:
    <?php
    
    $c = "questa è una prova <?php print 'ciao'; ?> che bello usare il php";
    
    eval_html($c);
    
    function my_eval($arr) {
        return ('echo stripslashes("'.addslashes($arr[0]).'");');
    }
    
    function eval_html($string) {
        $string = '<?php ?>'.$string.'<?php ?>';
        $string = str_replace( '?>', '', str_replace( array( '<?php', '<?' ), '', preg_replace_callback( "/\?>(.*?)(<\?php|<\?)/", "my_eval", $string ) ) );
        return eval($string);
    }
    
    ?>
    eXvision

  8. #8

  9. #9
    Mi serve un'ultima info.

    Se inserisco in una variabile il mio codice già lavorato dalle tue funzioni così:

    Codice PHP:
    <?php
    $codice_lavorato 
    eval_html($code);
    ?>
    Invece di inserirlo in una variabile me lo esegue direttamente.

    Penso che sia una caratteristica della funzione eval() di PHP.

    A me però serve lavorare ancora sul codice dopo averlo passato nelle tue funzioni.

    Esiste un modo per immagazzinare il tutto nella variabile $codice_lavorato ?

    Grazie

  10. #10
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    al massimo, con il codice che ho postato prima puoi ottenere qualcosa tipo

    codice:
     $var = "echo stripslashes(\"questa è una prova \"); print 'ciao'; echo stripslashes(\" che bello usare il php\"); "
    se poi fai eval($var) ti stampa la frase
    eXvision

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.