Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Espressioni regolari

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    8

    Espressioni regolari

    Ciao a tutti,
    ho un problema con le espressioni regolari. Vorrei controllare che username e password soddisfino determinati criteri: username(lunghezza min 4, max 32, solo lettere e cifre), password(lunghezza min 4, max 32, lettere, cifre, e i caratteri & e £)

    il mio codice è:
    Codice PHP:
    if (eregi("^([a-z0-9]{4,32})",$user)|| eregi("^([a-z0-9@&£]{6,32})"$psw))
    {
        if (
    eregi("^([a-z0-9]{4,32})",$user))    // username è una stringa di caratteri alfanumerici(no caratteri speciali) di lunghezza min 4
        
    {
            echo(
    'Username non valido');
        }

        if (
    eregi("^([a-z0-9@&£]{4,32})",$psw)) // password è una stringa di caratteri alfanumerici(e i caratteri speciali @,&,£) di lunghezza min 6
        
    {
            echo(
    'Password non valida');
        }

        echo(
    ' [url="accedi.php"] Riprova [/url]');

    Ma non mi da i risultati sperati...
    Cosa sbaglio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    58
    Ciao!

    Se le condizioni che metti negli if sono quelle da rispettare, la funzione restituisce vero se sono rispettate per cui credo che tu debba fare al contrario:


    esempio
    Codice PHP:
    if (controlla($user)!=1// $user è una stringa di caratteri alfanumerici(no caratteri speciali) di lunghezza min 4
    echo = "Stringa non rispetta";

    function 
    controlla($stringa)
    {
    if (
    preg_match("^([a-z0-9]{4,32})",$stringa))    
    return 
    1;

    circa dovrebbe essere così..
    ciao

  3. #3
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Potresti anche fare una cosa molto più semplice, anzichè entrare ed uscire da tutti quegli if, o addirittura crearti una funzione per farti restituire lo stesso valore che ti ritornerebbe "comunque" l'esito dell'espressione, 1 o 0, in ogni caso, di controlli con if ne usi solo 2:

    Codice PHP:
    if(!preg_match('/^[\\w\\d+]{4,32}$/i'$user))
    exit(
    'Username non accettato.');

    if(!
    preg_match('/^[\\w\\d&£+]{4,32}$/i'$pass))
    exit(
    'Password non accettata.'); 

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    58
    sì esatto

    if(!preg_match... corrisponde a se non e quindi si inverte la condizione...


  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    8
    non capsco a cosa serva lo / e cosa fa la funzione... che diff c'è con eregi? grazie 1000

  6. #6
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    usa questa che è... ottimizzata

    Codice PHP:
    if(!preg_match('/^[\\w+]{4,32}$/'$user))
    exit(
    'Username non accettato.');

    if(!
    preg_match('/^[\\w&£+]{4,32}$/'$pass))
    exit(
    'Password non accettata.'); 
    cioè corretta


    allora, le preg_ sono molto più veloci rispetto alle ereg_ e questo è un dato di fatto.

    l'espressione verifica che ci siano caratteri alfanumerici da un minimo di 4 ad un massimo di 32, nel primo caso. Nel secondo caso invece cerca solo caratteri numerici da 4 a 32, oltre ai simboli & e £, ma anche il simbolo _ per l'effetto del carattere \w (vedi seguito).

    lo slash / rappresenta il delimitatore entro cui racchiudere l'espressione regolare che si occuperà della ricerca

    i simboli ^ e $ indicano rispettivamente l'inizio e la fine del testo entro cui cercare

    il carattere speciale \w cerca ogni singola lettera, cifra oltre al simbolo _ ed equivale a [0-9A-Za-z]

    l'indicatore di occorrenza + equivale a {1, }

    queste e tante altre belle diavolerie le puoi trovare sul manuale


    cia'

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    8
    Grazie milllllllllllllllllllllllllllllllllllllllllllle!!! !!!!!

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.