Visualizzazione dei risultati da 1 a 6 su 6

Discussione: preg_match()

  1. #1

    preg_match()

    Ciao a tutti,
    ho un'applicazione in php in cui l'utente può accederci con username e password.
    Voglio che la password inserita sia alfanumerica e per questo uso la funzione preg_match, ma non funziona come dovrebbe!
    Vi posto qui di seguito i test che ho fatto:

    Codice PHP:
    1. preg_match('/[A-Z]+/',"maePopak1"); //true ed essendoci 1 mi aspetto il false
    1bpreg_match('/^[A-Z]+$/',"maePopak"); //false e mi aspetto true

    2. preg_match('/[a-z]+/',"RGTWJKB1g");  //true ed essendoci 1 mi aspetto il false
    2bpreg_match('/^[a-z]+$/',"RGTWJKBg"); //false e mi aspetto true

    3. preg_match('/[0-9]+/',"RGTWJKB5");  //true ed essendoci caratteri alfabetici mi aspetto il false
    3bpreg_match('/^[0-9]+$/',"1234543"); //true unico che funziona

    4. preg_match('/[a-zA-Z0-9]+/',"PJGPm5P");  // mi restituisce FALSE e invece mi aspetto TRUE 
    In cosa sbaglio ad usare questa funzione?
    grazie mille per l'aiuto o suggerimenti che potrete darmi.
    Ciao ciao
    Ciao

  2. #2
    Ciao a tutti,
    sono nuovo del forum...
    chiedo scusa ad eldef per l'intromissione nel suo post, ma anche io come lui ho lo stesso problema con la preg_match() e per evitare di aprire un altro post mi collego a questo.
    Inoltre volevo anche chiedervi se potete aiutarmi a creare la reg expression che mi serve...
    dovrei effettuare un controllo sugli indirizzi di posta immessi in fase di registrazione.
    I miei indirizzi di posta sono tutti del tipo nome.cognome@pippo.it dove pippo.it è uguale per tutti gli utenti.
    come devo scrivere la reg expression relativa?
    Grazie
    Marco

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    Re: preg_match()

    1. preg_match('/[A-Z]+/',"maePopak1"); //true ed essendoci 1 mi aspetto il false
    E' true perché effettivamente trova una corrispondenza, c'è una sequenza di caratteri alfabetici
    funziona con ^[a-zA-Z]+$
    1b. preg_match('/^[A-Z]+$/',"maePopak"); //false e mi aspetto true
    false perché tu chiedi che ci saino caratteri maiuscoli dall'inizio alla fine, ma non è così
    funiziona con ^[a-zA-Z]+$
    2. preg_match('/[a-z]+/',"RGTWJKB1g"); //true ed essendoci 1 mi aspetto il false
    E' true perché effettivamente trova una corrispondenza, c'è una sequenza di caratteri alfabetici
    funiziona con ^[a-zA-Z]+$
    2b. preg_match('/^[a-z]+$/',"RGTWJKBg"); //false e mi aspetto true
    false perché tu chiedi che ci saino caratteri minuscoli dall'inizio alla fine, ma non è così
    funiziona con ^[a-zA-Z]+$
    3. preg_match('/[0-9]+/',"RGTWJKB5"); //true ed essendoci caratteri alfabetici mi aspetto il false
    E' true perché effettivamente trova una corrispondenza, c'è almeno un numero nella stringa
    funziona con ^[0-9]+$
    4. preg_match('/[a_zA_Z0_9]+/',"PJGPm5P"); // mi restituisce FALSE e invece mi aspetto TRUE
    l'underscore per cosa sta? Hai sbagliato e volevi mettere il "-" ? in tal caso darà true come dovrebbe essere

  4. #4
    Grazie mille Alhazred!!!

    non avevo ben capito la funzione...


    Riguardo agli underscore della 4 citazione, è stato un errore di scrittura mentre lo postavo, e finalmente funziona!

    Alexmarco hai già controllato che non ci sia già una discussione in questo forum?
    comunque in internet ci sono diversi esempi sulla costruzione della reg expression circa la formattazione dell'email...attento però che usano spesso la funzione eregi() o ereg() ormai deprecate e sostituite da preg_match().
    Da un occhio a questo articolo:
    http://www.mrwebmaster.it/php/artico...inder_835.html
    Ciao

  5. #5
    Originariamente inviato da eldef
    Grazie mille Alhazred!!!

    non avevo ben capito la funzione...


    Riguardo agli underscore della 4 citazione, è stato un errore di scrittura mentre lo postavo, e finalmente funziona!

    Alexmarco hai già controllato che non ci sia già una discussione in questo forum?
    comunque in internet ci sono diversi esempi sulla costruzione della reg expression circa la formattazione dell'email...attento però che usano spesso la funzione eregi() o ereg() ormai deprecate e sostituite da preg_match().
    Da un occhio a questo articolo:
    http://www.mrwebmaster.it/php/artico...inder_835.html

    ciao eldef,
    secondo te così potrebbe funzionare:

    Codice PHP:
    function is_valid_email($check_mail)   
    {
        if(
    preg_match("^[a-zA-Z]+\.[A-Za-z]+@[pippo]\.[it]$"$check_mail) > 0)
            return 
    true;
          else
               return 
    false;
       

    ?


    inoltre mi da sempre questo warning:
    preg_match() [function.preg-match]: No ending delimiter '^' found in /Users/marco/Sites/registrazione.php on line 56

    che è la linea dell'if

  6. #6
    Ciao Alexmarco,
    l'errore che hai è perchè ti mancano i delimitatori, gli /, dell'espressione regolare
    prova a sostituire la tua preg_match con questa:


    Codice PHP:
    preg_match('/^[^0-9][a-zA-Z]+([.][a-zA-Z0-9_]+)*[@][pippo]+([.][it]+)*$/',$check_mail
    Ponendo che l'email sia del tipo nome.cognome@pippo.it
    se vuoi abilitare i numeri nella parte del nome allora elimina [^0-9];
    se vuoi disabilitare i numeri e gli underscore nel cognome allora elimina 0-9_ da [a-zA-Z0-9_]

    La funzione preg_match() restituisce un booleano 0=false e 1=true, quindi puoi usarla direttamente nel codice..senza fare una funzione apposita, ma questo dipende dal proprio modo di programmare.
    Ciao

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.