Visualizzazione risultati 1 fino 13 di 13

Discussione: Funzione nella stringa sostituita da ereg_replace

  1. #1
    Guest

    Predefinito Funzione nella stringa sostituita da ereg_replace

    Ciao a tutti.
    Come da titolo, la mia richiesta è questa: è possibile usare delle funzioni da esegure sul testo sostituito con ereg_replace()?
    Forse con un esempio è più chiaro.

    Sto creando un forum e tra i vari bbcode che voglio rengere disponibili c'è anche quello [ php ], che si usa anche qui su vBulletin per evidenziare il codice PHP.
    Ora, per ottenere questo c'è una funzione apposita del php, highlight_string(), solo che non so come integrarla all'interno dell'espressione regolare:
    Codice PHP:
    $txt = "[php ]<?php echo\"Hello world!\"; ?>[/php ]";
    echo
    preg_replace("/\[php\](.*?)\[\/php\]/is", "??????", $txt);
    Sottolineo il fatto che nella variabile $txt ho volutamente inserito gli spazi per evitare di mandare in tilt questo forum...

    Avevo pensato di mettere
    Codice PHP:
    echo preg_replace("/\[php\](.*?)\[\/php\]/is", highlight_string($1), txt);
    ma non funziona.

    Qualcuno sa come fare?

  2. #2
    Guest

    Predefinito

    il parametro della funzione non può eseguire del codice php quindi non riconosce la funzione.
    Siccome anche io sto proggettando un forum e questa necessità l'ho sentita subito ho trovato un metodo abbastanza lungo che funziona bene, però per ora non ho intensione di rilasciare il codice della funzione che ho creato.

  3. #3
    Guest

    Predefinito

    devi aggiungere il modificatore "e"

  4. #4
    Guest

    Predefinito

    io ho provato anche quella soluzione, ma nn ho risolto niente.

  5. #5
    Guest

    Predefinito

    A giudicare da quel che si legge nel manuale php.net, soprattutto dagli smanettoni nei commenti, direi che può accettare tranquillamente questo:

    Codice PHP:
    echo preg_replace("/\[php\](.*?)\[\/php\]/is", 'highlight_string($1)', txt);

  6. #6
    Guest

    Predefinito

    ho provato il codice in locale, e sembra che abbia qualche errore infatti non funziona...
    c'è da dire poi che il codice che deve essere colorato deve contenere <? ?> altrimenti la funzione non colora niente.

  7. #7
    Guest

    Predefinito

    Beh sicuramente la variabile txt deve essere indicata con il dollaro:
    $txt


    (avevo pure replicato nel mio codice il refuso iniziale sorry, ho badato solo al secondo parametro)

  8. #8
    Guest

    Predefinito

    visto che dire 'ho la soluzione ma non ve la dico' di qualche post fa mi sembra una risposta alquanto inutile e perditempo, posto il codice del mio 'tentativo di risoluzione' di questo problema.

    Come giustamente specificato da inverno il modificatore 'e' è fondamentale per parsare il secondo parametro della preg_replace come codice php

    Codice PHP:
    $txt = '[ php ]var $tipo; $test_var = \'gsgsdg\'; $a = $b;' . "\n" . 'function test();[ /php ]';

    echo preg_replace("#\[php\](.*)\[/php\]#eisU", 'highlight_string(\'<?php $1 ?>\', true);', $txt);
    parsa correttamente tutti i caratteri speciali che ho provato.
    naturalmente i <?php e ?> puoi controllare se è necessario aggiungerli, tramite un ulteriore ereg.

    EDIT: ho inserito degli spazi nelle [ php ] e [ /php ] altrimenti il forum rimescolava il tutto :D

    mavericck
    Ultima modifica di mavericckweb : 09-05-2006 alle ore 23.51.57

  9. #9
    Ospite Guest

    Predefinito

    Citazione Originalmente inviato da jostock
    però per ora non ho intensione di rilasciare il codice della funzione che ho creato.
    segreto di stato? se nelle risposte bisogna usare "mezzi termini", meglio starsene "muti".. senza lanciare il sassolini e retrarre la manina..

    punti di vista eh..

    mha

  10. #10
    Guest

    Predefinito

    non era di certo quello che intendevo.
    Poi io prima di iziare il lavoro, ho riflettuto un po, e andando in giro ho pensato a quello che mi poteva essere utile inserire nel forum da creare.
    Poi ho fatto un'altra cosa che ritengo molto intelligente, cioè ho visto le cose più difficile come quelle della colorazione del codice php e html e me lo sono fatte per prime e devo dire che ci ho messo 2 mesi solo per queste 2 cose, così ora quello che mi è rimasto da fare è il lavoro più semplice.
    Prima di postare ho pensato, non so perchè io ci ho dovuto mettere 2 mesi per fare tutto quel lavoro che poi mi servirà, e lo devo dare ad un altro che sta creando un forum (è come fare pubblicità alla concorrenza).
    Se proprio lo volete posto il codice della funzione.

  11. #11
    Guest

    Predefinito

    @mavericckweb: Grazie mille funziona perfettamente! Ti aggiungerò nella sezione credits del readme!

    @joestock: Capisco le tue motivazioni, non c'è problema, anche perchè così ho risolto. Io però ho deciso di rendere completamente gratuito e open source il mio forum, tu no?

  12. #12
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Visto che risolto, chiudo.

    P.S.: I fatti privati risolveteli usando la messaggistica privata.


    EDIT: Riapro per una precisazione sul codice.

    Date le motivazioni esposte dall'utente il team reinserisce il messaggio



    makpaolo
    Ultima modifica di funcool : 12-05-2006 alle ore 10.32.41
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da tuttoeniente2
    @mavericckweb: Grazie mille funziona perfettamente! Ti aggiungerò nella sezione credits del readme!
    Non devi ringraziare me, bensì inverno ed heracleum. Non ho fatto altro che unire le loro due soluzioni.

    mavericck

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •