Visualizzazione risultati 1 fino 19 di 19

Discussione: eregi_replace greedy

  1. #1
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito eregi_replace greedy

    Ragazzi, grazie ad una guida di http://fido.altervista.org , mi sono inoltrato un pò nelle espressioni regolari, e mi sto impuntando nelle espressioni "avide"...

    Ho fatto questo codice..
    Codice PHP:
    <?
    $stringa
    = "[CODE]QUI C'è UNA RIGA DI CODICE! ' _- !! ??[/CODE] <br />Qui ne vediamo un'altra: <br /> [CODE]seconda riga di CODICE! 2°![/CODE]";
    $stringa = eregi_replace("\[CODE\](.*?)\[/CODE\]","<div class='codice'>\\1</div>",$stringa);
    echo
    $stringa;
    ?>
    Il problema è che non mi stampa proprio niente, e se tolgo il ?, beh sapete cosa succede...
    CiaoooO!

  2. #2
    Guest

    Predefinito

    devi inserire un ^ prima del pattern e un $ alla fine del pattern.

  3. #3
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da jostock
    devi inserire un ^ prima del pattern e un $ alla fine del pattern.
    Codice PHP:
    <?
    $stringa
    = eregi_replace("^\[CODE\](.*?)\[/CODE\]$","<div class='codice'>\\1</div>",$stringa);
    ?>
    Così???

    EDIT: non va...
    Ultima modifica di Leo91 : 20-06-2006 alle ore 17.31.53

  4. #4
    Guest

    Predefinito

    prova cosi:
    Codice PHP:
    <? $stringa = preg_replace("#\[CODE\](.*?)\[\/CODE\]#is", '<div class="codice">$1</div>', $stringa) ?>

  5. #5
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da jostock
    prova cosi:
    Codice PHP:
    <? $stringa = preg_replace("#\[CODE\](.*?)\[\/CODE\]#is", '<div class="codice">$1</div>', $stringa) ?>
    Che dire...funziona!
    Grazie mille jostock! Sparesti per caso dirmi dove trovare una guida e diventare bravo come te???

  6. #6
    Guest

  7. #7
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Mi potresti dire perchè questa non va?
    Codice PHP:
    <?
    $stringa
    = "[CODE]Ciaomamma![/CODE]";
    $dacam = "/\[CODE\]([^(\[\/CODE\])]+)\[\/CODE\]/";
    $stringa = preg_replace($dacam,"<strong>\\1</strong>",$stringa);
    echo
    $stringa;
    ?>
    Cioè mi stampa la stringa così com'è senza modificarla!

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

    Predefinito

    Perché hai chiuso due volte code? Cosa rappresentato i caratteri tra i due code esterni?
    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

  9. #9
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da funcool
    Perché hai chiuso due volte code? Cosa rappresentato i caratteri tra i due code esterni?
    Allora...il primo (/\[CODE\]) apre il tag CODE, poi questo tra parentesi ([^(\[\/CODE\])]+) dice che deve prendere OGNI cosa che NON SIA la parola [/CODE] e invece l'ultimo \[\/CODE\] chiude.

    Codice PHP:
    $stringa = preg_replace("/\[CODE\]([^(\[\/CODE\])]+)\[\/CODE\]/","<strong>\\1</strong>","[CODE]CIAO MAMMA![/CODE]");

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

    Predefinito

    E' quello che fa lo script scritto da Jostock nel post #4, o mi sbaglio?
    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

  11. #11
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da funcool
    E' quello che fa lo script scritto da Jostock nel post #4, o mi sbaglio?
    Quello di jostock fa così .*? e infatti funziona, però lo volevo fare in quest'altro modo, e mi chiedevo per quale motivo non va, visto che facendo
    Codice PHP:
    $stringa = "Qciaomammina!Q";
    $stringa = preg_replace("/Q([^Q]+)Q/","<strong>\\1</strong>",$stringa);
    echo
    $stringa;
    funziona...

  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

    Ma tu vuoi fare che se trova un code di chiusura ma ne trova uno più esterno non stampa quello interno?
    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
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da funcool
    Ma tu vuoi fare che se trova un code di chiusura ma ne trova uno più esterno non stampa quello interno?
    No no!
    Vorrei fare che se trova "[CODEz]Ciao al testo![/CODEz] qui senza code [CODEz]Un altro pò di testo![/CODEz]"(senza z)
    mi deve stampare
    "<strong>Ciao al testo!</strong> qui senza code <strong>Un altro pò di testo!</strong>"
    Tu che dici???

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

    Predefinito

    Questo codice, che è quello che uso io adattato, dovrebbe andare bene, ma non trovo differenze rispetto a quello di Jostock:
    Codice PHP:
    $testo=preg_replace("#\[code\](.+?)\[/code\]#si", "<strong>\\1</strong>", $testo);
    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

  15. #15
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da funcool
    Questo codice, che è quello che uso io adattato, dovrebbe andare bene, ma non trovo differenze rispetto a quello di Jostock:
    Codice PHP:
    $testo=preg_replace("#\[code\](.+?)\[/code\]#si", "<strong>\\1</strong>", $testo);
    Funcool mi potresti spiegare per cosa sta la "i" alla fine e perchè quel tuo codice funziona al contrario del mio?? Cioè... cos'è .+?

    ?? Grazie!

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

    Predefinito

    Come puoi vedere qui, .+? vuol dire che vanno bene praticamente tutti i caratteri, la i non mi ricordo bene a cosa serva forse è per non far distinzione tra maiuscole e minuscole.
    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

  17. #17
    Guest

    Predefinito

    Citazione Originalmente inviato da funcool
    la i non mi ricordo bene a cosa serva forse è per non far distinzione tra maiuscole e minuscole.
    Confermo, rende l'espressione insensibile alle maiuscole.
    @Leo91: Puoi leggere qui per maggiori informazioni.

  18. #18
    L'avatar di Leo91
    Leo91 non è connesso Altervistiano Junior
    Data registrazione
    28-03-2004
    Residenza
    alle tue spalle
    Messaggi
    728

    Predefinito

    Citazione Originalmente inviato da tuttoeniente2
    Confermo, rende l'espressione insensibile alle maiuscole.
    @Leo91: Puoi leggere qui per maggiori informazioni.
    Ok ok, però non ho capito una cosa...
    mettendo .+? in una stringa così:
    "
    Codice:
    buona sera!
    asdasdasd
    Codice:
    Ri buona sera!
    " selezionerà il testo tra i due code oppure il testo che c'è tra il primo e l'ultimo?? E se funziona bene, perchè?
    E ultima cosa perchè ciò che ho scritto non va? :(

    Ciaooo grazie!

    EDIT: Funziona!!!
    ecco il codice, grazie ragazzi!
    Codice PHP:
    <?
    $stringa
    = "[code]Funzia[/code] booh! [code]ah si[/code]";
    $stringa = preg_replace("/\[CODE\]([^(\[\/CODE\])]+)\[\/CODE\]/is","<strong>\\1</strong>",$stringa);
    echo
    $stringa;
    ?>
    EDIT2: come non detto...su "grandi stringone" non va...
    EDIT3: Fatto, era un errore di script stupidissimO!! Grazie mille !
    Ultima modifica di Leo91 : 21-06-2006 alle ore 14.37.55

  19. #19
    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.
    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

Regole di scrittura

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