Visualizzazione risultati 1 fino 6 di 6

Discussione: controllo caratteri un variabile

  1. #1
    Guest

    Predefinito controllo caratteri un variabile

    Salve vorrei controllare se in una stringa(presa da un form) sono presenti dei caratteri ad esempio nel nome e nel cognome non ci devono essere numeri e caratteri speciali ma solo lettere, ho provato in questo modo:

    $nome=$_POST['nome'];

    $nn='0';
    $charn="$";//con un carattere solo funziona ma se voglio cercare anche altri caratteri non funziona ad es. $charn="$£ %&"; oppure $charn=array('$','£','%','&');
    $nn=strpos($nome, $charn);

    if($nn>'0')
    echo "ERRORE: Nome NON VALIDO";

    Poi altro quesito: strpos da la posizione del carattere trovato, se l'utente lo scrive come primo carattere es. $marco, da come posizione 0, quindi io avendo messo >0 non mi da nessun errore, ho messo >0 perchè se non trova niente la variabile rimane a 0 e quindi mi direbbe errore anche se invece corretto. Come posso fare?

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,145

    Predefinito

    Se vuoi ottenere SOLTANTO lettere, puoi farlo con una reg exp, preg_match con pattern del tipo
    Codice:
    [A-Za-z]
    Tornando al tuo codice, è anche possibile fare come hai fatto tu, però tieni presente che ti da errore solo se incontra uno di quei quattro caratteri.
    La strpos() ritorna un numero che indica la posizione di dove ha trovato il carattere nella stringa. Per il controllo non puoi prendere come riferimento 0 perché è un carattere possibile (sarebbe il primo carattere). Devi invece usare invece l'operatore identical e guardare se la funzione ritorna false. Se ritorna false, allora la stringa non contiene nessun carattere di quelli che hai scelto.

    Codice PHP:
    if($nn!==false)
    echo
    'Errore...';
    Poi occhio a non confondere la cifra 0 con il carattere '0', che sono completamente differenti.

    Ciao!

  3. #3
    Guest

    Predefinito

    Grazie per il if($nn!==false), il problema è che non riesco ad elencare i caratteri che deve trovare se ne metto solo uno($charn="$";) funziona ma se faccio $charn="$£%&" oppure $charn=array('$','£','%','&'); non mi da nessun errore perchè presumo non si faccia così l'elenco dei caratteri

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Ma sei sicuro di voler controllare i caratteri da escludere piuttosto che controllare che una stringa rispetti un determinato linguaggio (come ti ha suggerito alemoppo)?

    In ogni caso, nella documentazione di php sulla funzione strpos ci sono alcuni commenti. Tra i tanti, qualcuno ha proposto una sua versione di strpos per gli array (cioè itera sull'array e controlla che ogni stringa di esso sia all'interno della stringa di ricerca). Vedi qui: http://php.net/manual/en/function.strpos.php#102773

  5. #5
    Guest

    Predefinito

    if (preg_match("/£$%&/\|!()=?'ì^[]{}@ç°#§<>,.:-_*-+0123456789/i", $nome)) {
    echo "Il riconoscimento è avvenuto.";
    } else {
    echo "Testo non riconosciuto.";
    }

    Ho provato così ma non funziona, va solo mettendo un carattere

  6. #6
    Guest

    Predefinito

    Ho risolto così

    if (preg_match("/[0-9\|!£$%&()=?'^@ç#°§<>,{};.:-_*-+]/i", $nome))
    {
    echo "Il riconoscimento è avvenuto.";
    } else {
    echo "Testo non riconosciuto.";
    }

    Solo che appena aggiungo come caratteri uno tra questi "/\[] non va

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •