Visualizzazione risultati 1 fino 11 di 11

Discussione: Regular Expression alternativa più robusta

  1. #1
    Guest

    Predefinito Regular Expression alternativa più robusta

    Salve,
    sto cercando di risolvere un piccolo problema con una reg_ex ma mi accorgo che la mia soluzione è piuttosto debole, quindi vorrei qualche alternativa migliore.

    Codice HTML:
    {Seleziona?[select](casa,auto,motorino,bottega,barca)*LETTERS*}
    Questa è la reg_ex che uso:

    Codice PHP:
    preg_replace('/\[(.*)\}/','}',$txt);
    Per ottonere {Seleziona?}

    Ma mi accorgo che è piuttosto debole in alcuni casi come questo:

    Codice HTML:
    [{Seleziona?[select](casa,auto,motorino,bottega,barca)*LETTERS*}]
    Quindi vorrei trovare qualcosa di più sicuro..

    Qualche suggerimento?

    ps Quelle condizioni si verificano poiché la stringa è immersa nel codice HTML, e quindi potrebbero presentarsi condizioni simili.

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Servirebbe sapere cosa esattamente può esserci tra { e }. Per esempio quel gruppo di parole separate da virgole è sempre così?


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    Guest

    Predefinito

    E' sicura soltanto questa parte
    {Seleziona?[select](casa,auto,motorino,bottega,barca)*LETTERS*}

  4. #4
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Allora sfrutterei tutte le parti fisse:

    Codice PHP:
    preg_replace('/\{Seleziona\?\[select\].*?\*LETTERS\*\}/', '{Seleziona?}', $txt);


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  5. #5
    Guest

    Predefinito

    E' solo sicura quella parte a livello di sintassi, ma i valori cambiano.

    potrebbe essere anche :
    Codice HTML:
    {Prova[text]*URL*}

  6. #6
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Si cerca di adattarla:

    Codice PHP:
    preg_replace('/\{(\w+\?)\[\w+\].*?\*\w+\*\}/', '{$1}', $txt);
    Ultima modifica di saitfainder : 17-03-2009 alle ore 18.56.42


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da saitfainder Visualizza messaggio
    Si cerca di adattarla:

    Codice PHP:
    preg_replace('/\{\w+\?\[\w+\].*?\*\w+\*\}/', '{Seleziona?}', $txt);

    S'incasina un po'...mmm ci ragiono ancora..

    Edit:
    Codice PHP:
    preg_replace('/\{(.*)\[\w+\].*?\*\w+\*\}/i', '\\1', $txt);
    Sembra fungere.

    Grazie sait.. :)
    Ultima modifica di svacant : 17-03-2009 alle ore 19.00.15

  8. #8
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Ho editato, non so se hai visto.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  9. #9
    Guest

    Predefinito

    Visto adesso, funge anche la mia versione :D

  10. #10
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Attento che quel (.*) iniziale può facilmente sfuggire di mano. Meglio un (.*?)


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da saitfainder Visualizza messaggio
    Attento che quel (.*) iniziale può facilmente sfuggire di mano. Meglio un (.*?)
    Ok, grazie ancora :)

Regole di scrittura

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