Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Espressione regolare con eregi

    Ciao ragazzi, io avrei bisogno di utilizzare la funzione eregi() per controllare che in una stringa ci siano state solamente lettere (da A a Z, se maiuscole o minuscole non fa differenza) e che non ci siano nč numeri nč caratteri speciali...
    Purtroppo non so proprio come scrivere questa espressione regolare..ringrazio anticipatamente tutti..ciao ciao ragazzi

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    121
    Io non sono un grande esperto di espressioni regolari, ti do una cosa piuttosto barbara, sempre meglio di niente...!

    if (eregi("[0-9]",$string) and !eregi("[A-Za-z]",$string))

    se si verifica questa condizione la variabile $string contiene solo numeri

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da scaveng3r
    Io non sono un grande esperto di espressioni regolari
    idem come sopra.

    meglio una preg comunque

    prova questa se vuoi inserire solo una parola senza spazi
    if (!preg_match("/^[A-Z]+$/i",$testo))
    echo "testo non valido";

    se invece vuoi inserire solo lettere ma anche spazi
    if (!preg_match("/^[A-Z[:space:]]+$/i",$testo))

    prendile con beneficio d'inventario.

  4. #4
    Utente di HTML.it L'avatar di renzoz
    Registrato dal
    May 2001
    Messaggi
    305
    Mi interessa questa funzione perō a me serve che la mia stringa debba contenere sia lettere che numeri in quantitā indifferente ma che sia per forza alfanumerica... come posso fare?

  5. #5
    se vuoi lettere, lettere accentate e numeri :
    codice:
    if (!preg_match("/^[^\W_]+$/i",$testo))
    echo "testo non valido";
    altrimenti senza le accentate:
    codice:
    if (!preg_match("/^[a-z0-9]+$/i",$testo))
    echo "testo non valido";
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  6. #6
    Utente di HTML.it L'avatar di renzoz
    Registrato dal
    May 2001
    Messaggi
    305
    Grazie Anakin, avevo giā provato la funzione che mi hai descritto perō
    if(preg_match("/^[A-Z0-9]+$/i",$pass)) mi restituisce TRUE sia nel caso di una stringa
    "ABCDEF" che di una "123456" (e aggiungo ovviamente!).

    A me serve un controllo che verifichi che la stringa sia formata da lettere E numeri non da lettere O numeri, io sono un pō schiappa con le regexp perō mi sa che non č la funz. che fa per il mio caso.

    Intanto ho creato questa che arrayzza la stringa e fa il confronto ma mi dā sempre TRUE e pare non funzioni:


    $lstringa = strlen($pass);
    for($q=0; $q < ($lstringa + 1); $q++)
    {
    $apass[$q] = $pass[$q];
    }

    $arr_alfa = array("A","B","C","D","E","F","G","H","I","J","K", "L","M","N","O","P","Q","R","S","T","U","V","W","X ","Y","Z");
    $tot_alfa = count($arr_alfa);
    $arr_num = array("1","2","3","4","5","6","7","8","9","0");
    $tot_num = count($arr_num);

    $a = 0;
    for($i=0; $i < ($tot_alfa + 1); $i++)
    {
    if(in_array($arr_alfa[$i], $apass))
    {$a = 1;
    break;
    }
    }

    // controlla numeri
    $n = 0;
    for($y=0; $y < ($tot_num + 1); $y++)
    {
    if(in_array($arr_num[$y], $apass))
    {$n = 1;
    break;
    }
    }

    if(($a == 0) || ($n == 0))
    { echo"LA PASSWORD DIGITATA DEVE CONTENERE SIA LETTERE CHE NUMERI";}


    Ma come ripeto mi dā sempre esito positivo in ogni caso.

  7. #7
    La funzione fa sicuramente al caso tuo, in caso sono io che non faccio al caso della funzione
    Prova questa:

    con accentate
    codice:
    if (!preg_match("/^([^\W_0-9]+[0-9]+)+|([0-9]+[^\W_0-9]+)+[^\W_]?$/i",$testo))
    echo "testo non valido";
    senza accentate
    codice:
    if (!preg_match("/^([a-z]+[0-9]+)+|([0-9]+[a-z]+)+[a-z0-9]?$/i",$testo))
    echo "testo non valido";
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  8. #8
    Utente di HTML.it L'avatar di renzoz
    Registrato dal
    May 2001
    Messaggi
    305
    AnĒkin, sei un GRANDE!!!!
    Cosi č perfetta!
    Devo studiarmi bene le regexp cazzarola...

  9. #9
    Scusate se mi intrometto!

    io vorrei che una stringa contenga solo alcuni caratteri:

    č corretto cosi?
    Codice PHP:
    if(eregi("[^a-z0-9]",$str)) { // cioč vale solo se contengo caratteri alfanumerici??
    SI
    }else {
    NO

    ho un dubbio, perchč mi funziona con il simbolo "^" ? Non dovrebbe negare la classe?

    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.