Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Aiuto per regular expression

    Ciao a tutti,
    mi trovo incastrato con queste regular expression. Potreste gentilmente confermarmi che quanto stia dicendo non sia una cavolata?

    in un espressione del tipo:
    (.+?)/([^/]+?)

    (.+?) significa qualsiasi carattere ripetuto una o più volte ( ma poi non capisco il ? che da quanto leggo significa 0 o 1 volta... mentre

    ([^/]+?) significa Uno o più caratteri, ma non lo slash / ( poi sempre non capisco il ? )

    inoltre come potrei dire che in un blocco posso avere tutto ma non una determinata parola? forse con ([^parola]+?).

    grazie mille!!!!

  2. #2
    Quote Originariamente inviata da zoc Visualizza il messaggio
    in un espressione del tipo:
    (.+?)/([^/]+?)

    (.+?) significa qualsiasi carattere ripetuto una o più volte ( ma poi non capisco il ? che da quanto leggo significa 0 o 1 volta... mentre
    Corretto. Il ? di domanda dopo trasforma il quantificatore + da "greedy" a "ungreedy". Di default i quantificatori come * e + prendono il piu' possibile, con il ? invece prendono il meno possibile.
    Per fare un esempio, se hai la parola "ciambella" e il pattern /c.*a/ verra' matchato l'intero "ciambella"
    se hai il pattern /c.*?a/ verra' matchato "cia"

    Aggiungo che le parentesi servono a raggruppare e a riutilizzare la parte matchata come backreference.

    Maggiori dettagli su: http://www.regular-expressions.info/

    Quote Originariamente inviata da zoc Visualizza il messaggio
    ([^/]+?) significa Uno o più caratteri, ma non lo slash / ( poi sempre non capisco il ? )
    Corretto, per il ? vedi sopra.

    Quote Originariamente inviata da zoc Visualizza il messaggio
    inoltre come potrei dire che in un blocco posso avere tutto ma non una determinata parola? forse con ([^parola]+?).
    No, non puoi farlo con una sintassi del genere, come farlo dipende dai casi.

  3. #3
    Ciao k.b e grazie di cuore per l'aiuto!
    Mi servirebbe che questo blocco

    ([^/]+?)

    dicesse: tutti i caratteri, tranne lo / e la parola "ciccio".
    Mi indicheresti la retta via?
    grazie ancora!

  4. #4
    Quote Originariamente inviata da zoc Visualizza il messaggio
    Ciao k.b e grazie di cuore per l'aiuto!
    Mi servirebbe che questo blocco

    ([^/]+?)

    dicesse: tutti i caratteri, tranne lo / e la parola "ciccio".
    Mi indicheresti la retta via?
    grazie ancora!
    Se ho capito bene intendi "tutti i caratteri tranne / fino alla parola ciccio esclusa", in questo caso il pattern e' semplicemente:
    codice:
    ([^/]+?)ciccio
    e usi il backreference $1

    Se non era questo il caso fammi un esempio concreto

  5. #5
    grazie per la risposta,
    ma purtroppo non era quello che intendevo
    ecco un esempio di cosa non voglio

    /ciccio/

    quindi

    /ok_tutti_i_caratteri/tutti_ok_tranne_ciccio/

    grazie!

  6. #6
    Quote Originariamente inviata da zoc Visualizza il messaggio
    grazie per la risposta,
    ma purtroppo non era quello che intendevo
    ecco un esempio di cosa non voglio

    /ciccio/

    quindi

    /ok_tutti_i_caratteri/tutti_ok_tranne_ciccio/

    grazie!
    Non mi e' chiaro, fammi un esempio pratico di cosa hai e cosa devi ottenere.

  7. #7
    ok grazie.

    Questa url di seguito e' ok:

    /macchina/cabrio/

    questa no:

    /macchina/ciccio/

    il controllo avviene sulla parola "ciccio". Quindi vorrei dire che per quel blocco mi va bene tutto tranne che "ciccio'.

    grazie!

  8. #8
    Ma allora non ti basta usare un preg_match per vedere se la stringa contiene "ciccio"?

    Comunque e' sempre piu' facile se esponi il problema che devi risolvere partendo dall'inizio anziche' da una parziale soluzione.

  9. #9
    Scusami hai ragione.
    Ecco il codice di una funzione wordpress per modificare le url rewrite:

    Codice PHP:

    add_action
    'generate_rewrite_rules''add_rewrite_rules' );
    function 
    add_rewrite_rules() {
        global 
    $wp_rewrite;
        
    $no_rewrite 'ciccio';        
        
    $first = array(        
            
    '(.+?)/(.+?)/([^/]+?)/?$' => 'index.php?attachment=' $wp_rewrite->preg_index(3),
        );        
        
    $wp_rewrite->rules $first $wp_rewrite->rules;

    in questo blocco ([^/]+?) vorrei avere la possibilita di dire "se e' uguale a $no_rewrite" non mi applicare il rewrite.
    Grazie e scusa per la confusione!
    Ultima modifica di zoc; 01-07-2014 a 16:28

  10. #10
    Prova con questo pattern:

    codice:
    (.+?)/(.+?)/((?:(?!ciccio)[^/])+?)/?$

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 © 2024 vBulletin Solutions, Inc. All rights reserved.