• User Attivo

    [PREG_REPLACE] CHIEDO AIUTO ai GURU della sintassi

    Salve a voi,
    sto impazzendo per un errore di sintassi che sono sicuro sia di una enorme stupidità, però non riesco a trovare la soluzione.

    voglio richiamare una funzione utilizzando una variabile ottenuta tramite preg_replace

    
    $testo=
    preg_replace(
    "/[IMMAGINE GRANDE ID=(.*)]/",
    $GLOBALS[upload]->getImageAddress('IMG_TAG',$1,'_ico.jpg'),$testo);
    
    

    se la scrivo così mi da errore, se metto $1 tra virgolette funziona ma non mi passa il valore,

    qualche idea?


  • User Attivo

    Ciao Zumbo,
    è un classico sbatterci la testa... 😄

    prova con:

    $GLOBALS[upload]->getImageAddress("IMG_TAG$1_ico.jpg")

    dovrebbe funzionare... ma se ti da errore postalo, così arriviamo prima a meta! 😄

    :ciauz:


  • User Attivo

    @ceccus said:

    Ciao Zumbo,
    ...prova con:
    $GLOBALS[upload]->getImageAddress("IMG_TAG$1_ico.jpg")...

    :ciauz:

    Ciao, e scusa per il ritardo.

    N.B. è cambiata la funzione da richiamare ma:

    scrivendo così

    $testo=preg_replace("/[IMMAGINE GRANDE ID=(.*)]/",
    printImage("$1FULL"),$testo);

    mi dà il missing argument 2

    comunque ho trovato la soluzione:

    innanzitutto ho scoperto (non lo sapevo) che aggiungendo una "e" si sottindente eval

    quindi il primo parametro della funzione preg_replace diventa

    /[IMMAGINE GRANDE ID=(.*)]/e
    ```inoltre ho notato che non gli piace che chiami un T_OBJECT,quindi ho dovuto ricreare la funzione subito prima del codice, senza includerla in una classe ed ho eseguito il preg_replace in questo modo:
    
    

    $testo=preg_replace("/[IMMAGINE GRANDE ID=(.*)]/e",
    "printImage($1,'FULL')",$testo);

    per evitare di scrivere $GLOBALS[nome_classe]->printImage(...