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

    Espressione regolare per controllare una stringa.

    Buongiorno.

    In una pagina php devo eseguire un controllo, banale, ma che non sono riuscito ad implementare.
    Ho un form di inserimento dati, e desidero impostare un controllo affinché il campo di testo possa contenere solamente lettere maiuscole, minuscole, accentate, numeri, spazio vuoto ma non caratteri speciali.
    Cioè consentire: "a-z", "A-Z", "èéòàù", "0-9", " ". Se nella stringa viene inserito anche solo un carattere speciale come "\|!£$%&/()=@# ecc..." me ne devo accorgere.
    Con la funzione ctype_alnum(), mi avvicno al risultato, ma controlla solamente che la stringa sia alfanumerica. (Le lettere accentate rimangono fuori). Penso che la soluzione sia con le espressioni regolari.

    Qualcuno potrebbe venirmi in aiuto?

    Grazi mille.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    [A-Za-z0-9àèéìòù\s]

  3. #3
    Grazie Alhazred per la tua velocità.

    Il campo di accettabilità che suggerisci tu, in quale funzione php lo posso inserire e come? Potresti farmi un esempio?

    Grazie

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Va nello script php che riceve i dati provenienti dal form, l'espressione regolare va usata con la funzione preg_match()

  5. #5
    Allora ho provato con il seguente codice:

    Codice PHP:
    if (preg_match('[A-Za-z0-9àèéìòù\s]',$testo))    
    {        echo 
    "OK";    }    
    else    
    {        echo 
    "NO";    } 
    (Ho provato anche con la condizione opposta nel IF).
    Ma non esegue con successo il controllo. In questa condizione mi da sempre esito "NO". Se la condizione del IF la nego "if (!preg_match('[A-Za-z0-9àèéìòù\s]',$testo))" il risultato è sempre "OK".
    Sto sbagliando qualcosa io?

    Grazie

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Controla cosa c'è dentro alla variabile $testo. Controllalo però, non pensare a cosa "dovrebbe" contenere, verificalo.

    Inoltre se hai letto la documentazione che ti ho linkato, avrai notato che l'espressione regolare si apre e si chiude con /, si tratta di delimitatori e ci vanno messi.

  7. #7
    In che senso?
    Ho controllato, mettendo in output $testo, e contiene effettivamente cosa ho digitato.

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    if (preg_match('/^[A-Za-z0-9àèéìòù\s]+$/',$testo))

  9. #9
    Ok, grazie.

    Funziona.
    Però se digito le lettere accentate (àèéìòù) mi entra nel Else del codice.

    Codice PHP:
        if (preg_match('/^[A-Za-z0-9àèéìòù\s]+$/',$_GET['testo']))    
    {        echo 
    "OK pr";    }    
    else    
    {        echo 
    "NO pr";    } 

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Leggi il link che ho in firma sui caratteri strani, evidentemente c'è un problema di codifica dei caratteri e non vengono riconosciuti correttamente.

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.