Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885

    deprecato ereg ed eregi.. e le regular expression?

    ciao a tutti ...

    ho un problemino con delle espressioni regolari ...

    ho letto che dalla 5.3.0 ereg, eregi e tutte le loro forme sono state deprecate.

    io possiedo un server con la 5.3.1 e vorrei evitare di usare strumenti in via di estinzione...

    io ho creato un espressione (di prova) e ho usato lo strumento consigliato
    PREG_MATCH($pattern , $soggetto [opzioni]) ;

    ma ritorna sempre false, mentre se uso ereg ritorna il valore corretto ...


    qualciuno mi può aiutare?

    Codice PHP:
    function DueParti($parametro){

        
    $exp '^[a-zA-Z]+$';
            
    $preg preg_match($exp $parametro); //questa non funziona
        
    $preg ereg($exp $parametro);//anche se deprecata va che è una meraviglia
        
    return $preg;

    }


    $variabile 'dsssa';

    $valore DueParti($variabile);

    var_dump($valore); 

    ciao e grazie

  2. #2
    La sintassi delle PCRE prevede che il pattern sia racchiuso da delimitatori, esempio:

    codice:
    '/^[a-zA-Z]+$/'
    o meglio ancora

    codice:
    '/^[a-z]+$/i'

  3. #3
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    ti ringrazio ...
    ora funziona tutto

    una domanda ancora la i alla fine del pattern perchè bisogna metterla ?
    il pattern e case unsensitive?

  4. #4

  5. #5
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    ancora una cosa che non riesco a trovare da nessuna parte

    io ho questa espressione regolare:
    Codice PHP:
    /(^[0-9]{3,5})+*[\.\-\_\ ]+([0-9]{6,10})+$/ 
    che significa :
    comincio con una serie di numeri minimo 3 massimo 5 (fin qui ok)
    posso avere dei caratteri speciali . - _ (qui nasce il problema , come dire PUO?)
    subito dopo i caratteri un altra serie di numeri minimo 6 max 10

    come faccio a dire all'espressione il termnine PUO?

    grazie!

  6. #6
    Originariamente inviato da tapu
    ancora una cosa che non riesco a trovare da nessuna parte

    io ho questa espressione regolare:
    Codice PHP:
    /(^[0-9]{3,5})+*[\.\-\_\ ]+([0-9]{6,10})+$/ 
    che significa :
    comincio con una serie di numeri minimo 3 massimo 5 (fin qui ok)
    posso avere dei caratteri speciali . - _ (qui nasce il problema , come dire PUO?)
    subito dopo i caratteri un altra serie di numeri minimo 6 max 10

    come faccio a dire all'espressione il termnine PUO?

    grazie!
    Con il punto di domanda, traduco in regexp quanto hai scritto:

    codice:
    /^\d{3,5}[._-]?\d{6,10}$/
    i piu' e gli asterischi li hai messi un po' a caso

    NOTA: se all'interno di una character class (le parentesi quadre) devi mettere un trattino, allora lo devi mettere o come primo carattere o come ultimo, altrimenti viene interpretato come operatore e sta a indicare "qualunque carattere che sia compreso tra quello che precede il trattino e quello che lo segue" come in [a-z].

  7. #7
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    hummm ... ok...

    quindi la
    \d = [0-9]

    il ? dopo una 'sequenza' segnala la possibilità che ci possano essere quei caratteri

    l'unica cosa che non mi è chiara è che tu hai messo

    [.-_ ] mentre io [\.\-\_\ ] altrimenti mi restituisce errore ... poi le () non servono per dividere i pezzi della tua stringa?

    scusa ma tutte le info che trovo sulla rete sono molto confuse e datate

  8. #8
    Originariamente inviato da tapu
    hummm ... ok...

    quindi la
    \d = [0-9]

    il ? dopo una 'sequenza' segnala la possibilità che ci possano essere quei caratteri

    l'unica cosa che non mi è chiara è che tu hai messo

    [.-_ ] mentre io [\.\-\_\ ] altrimenti mi restituisce errore ... poi le () non servono per dividere i pezzi della tua stringa?

    scusa ma tutte le info che trovo sulla rete sono molto confuse e datate
    Il punto di domanda significa che il carattere (o il blocco) che lo precede puo' essere presente 0 o 1 volta (in altre parole e' opzionale).

    I backslash non sono necessari, che errore ti da'?

    Le parentesi tonde servono per "catturare" pezzi del testo da riutilizzare in seguito (backreference), oppure per unire alcune parti per considerarle come un blocco solo (anche se in quel caso e' meglio usare la sintassi per le "parentesi che non catturano").

    Ottime informazioni sulle regex qui: http://www.regular-expressions.info/

  9. #9
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    l'errore che mi dà è il seguente

    Codice PHP:
    Warningpreg_match() [function.preg-match]: Compilation failedrange out of order in character class at offset 16 in C:\xampp\htdocs\prova\regex.php on line 15 

    per le parentesi tonde io ho messo cosi l'espressione

    $exp = '/(^[0-9]{2,5}[\.\_\-\ ]?)([0-9]{6,10})?$/';

    che sarebbe il primo blocco obbligatorio (^[0-9]{2,5}
    questa parte opzionale [\.\_\-\ ]?
    ma tutto fa parte della sottostringa .

    poi ([0-9]{6,10})? questo blocco che può esserci e non esserci

    e il $ che fa finire il tutto

  10. #10
    Perche' c'e' uno spazio dopo il trattino all'interno delle quadre. Come dicevo, se devi mettere il trattino all'interno di una character class lo devi mettere come primo o ultimo carattere.

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