Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [Articoli PHP] Eval()

  1. #1

    [Articoli PHP] Eval()

    Ho un problema con quest'articolo di php.html.it: http://php.html.it/articoli/leggi/84...ati-con-php/3/

    In particolare non riesco a capire esattamente la funzione di tutti gli \ e di tutti gli apici nelle due righe di codice:

    return str_replace (...
    eval (...

    presenti nell'ultimo blocco di codice.

    Esiste un modo per salvare l'output della riga contenente la funzione eval() in una variabile?

    Grazie

  2. #2
    una delle funzioni del backslash "\" ovvero carattere di escape, è di riferire a php che quel determinato carattere non deve essere interpretato come carattere per codice php ma come stringa ( oltre agli \n \r \t etc che sono caratteri speciali ).
    ad esempio: se scrivi $var = " " " ; ti darebbe errore di sintassi a quella riga perchè con la stringa viene chiusa dalle seconde virgolette e non dalle terze. Se invece aggiungi un backslash alla seconda virgolatta: $var = " \" " ; la virgoletta di mezzo viene interpretata come un carattere di stringa
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  3. #3
    sì, questo lo sapevo. Ma i tre backslah di fila seguiti da " nella funzione str_replace che vogliono dire? La funzione vuole dire:

    sostituisci " con \"

    giusto? I due backslah prima di \" significano che i due caratteri che vengono dopo non devono essere interpretati come php?

    Comunque non riesco a spiegarmi l'uso dei backslash nella funzione eval... che scopo hanno?

    Grazie dell'aiuto intanto

  4. #4
    l'uso dei \\\" significa che il primo backslash trasforma in stringa il secondo blackslash
    se in php fai un eval del genere:

    eval ( "echo \" \"ciao \"; " ) ;
    php restituirebbe un errore di eval perchè il codice che verrebbe fuori da questo sarebbe:
    echo " "ciao" ;
    allora inq uesto caso si aggiunge l'escape anche al backslash... cosi nell'eval aremo:
    eval ( "echo \" \\\"eciao \"; " ) ;
    e il risultato sarebbe
    echo " \" ciao " ;

    sono stato chiaro ?
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  5. #5
    ok ok inizio a capire... ho ancora un paio di dubbi:

    eval("Stampa(\"".GetTemplate("template.html")."\") ;");

    1. ma perchè su due " non c'è lo slash prima? Come mai eval(""); non si interrompe quando trova il primo " senza \ ?

    2. posso salvare l'output di questa stringa in una variabile?

    Grazie 1000

  6. #6
    Scommetto che programmi con il bocco note Se utilizzeresti un editor con la colorazione automatica del testo capiresti meglio. Guarda questa stringa
    Codice PHP:
    eval("Stampa(\"".GetTemplate("template.html")."\");"); 
    Se noti, prima del punto, la stringa viene interrotta: "Stampa(\"". Il punto serve per unire piu stringhe: $stringa = "a" . "b" . "c" ; o $stringa = $a . $b . $c
    quando quella stringa si interrompe, è il vero php che lancia la funzione GetTemplate che restituisce il template html alla funzione eval
    Quella stringa in realtà è
    eval ("Stampa(\"[b] Template html che restituisce GetTEmaplte()\");");
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

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.