Newsgroup: it.comp.www.php
Titolo: Esiste una funzione PHP per....

Esiste una funzione PHP per verificare che determinate stringhe contengano
solo caratteri normali e numeri, senza dover fare un ciclo di for per
controllare ogni singola lettera?
Grazie a tutti per un eventuale risposta.
Ciao, Luca

 ha scritto nel messaggio
news:9nisvd$1n6$1...@nreadb.inwind.it...


 controllare ogni singola lettera?
ho finito un lavoretto del genere proprio oggi
----------------------------------------------------------------------------
-------------
function test($str1, $str2)
{
$var = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz ";
if ( (strspn($str1,$var))!=(strlen($str1)) ||
(strspn($str2,$var))!=(strlen($str2)) )
{
return 1;
} else {
return 0;
}
}
//---------------------------------------------------\\
if ( test($stringa1, $string2) != 0 )
{
print "Sia stringa1 che $stringa2 contengano numeri.\n";
} else {
print "Sia stringa1 che $stringa2 non contengano numeri.\n";
} // fine switch
----------------------------------------------------------------------------
-------------
a te il piacere di capire cosa c'e' scritto (:


[cut]
Usare le espressioni regolari no eh?? ;-)
eregi("[a-z]", $stringa, $risultato)
ciao
--
Kappa
ka...@webngo.net
www.webngo.net
www.filmscoop.it


facile con un preg_match() (leggi qui per capire:
http://www.php.net/manual/en/function.preg-match.php
e 
http://www.php.net/manual/en/pcre.pattern.syntax.php
)
Presumendo che caratteri normali siano a-z A-Z (magari per testare password
validi?):
$testString = "CiaoLuna";
if (!preg_match("/^[a-zA-Z0-9]+$/",$testString))
        echo "contiene ANTI alfanumerici";
else
        echo "contiene SOLO alfanumerici";
Se invece vuoi anche roba come -_. (per un url test magari)
if (!preg_match("/^[a-zA-Z0-9_.-]+$/",$testString))
        echo "contiene ANTI alfanumerici";
else
        echo "contiene SOLO alfanumerici";

 wrote in message
news:9nkd8k$81t8h$1...@ID-107586.news.dfncis.de...

Cosi te la fa solo sul primo carettere, eh, no, o?!

 eregi("[a-z]", $stringa, $risultato)
e cosi' puoi inserire anche i caratteri maiuscoli, le virgole e gli spazi?
(:
--
NighTiger
www.spippolatori.com
----------------------------------------------
               Evita flat:
Aruba, Edi&Sons e Galactica
----------------------------------------------

 ho finito un lavoretto del genere proprio oggi
[CUT]
Non e' un bel modo di programmare :)))
potresti fare una cosa del genere (la sto scrivendo al volo, provala 
per vedere se funziona)
if (ereg("^[a-zA-Z]*$",$stringa)) {giusta} else {sbagliata};
L'espressione regolare si legge in questo modo:
^ e' l'inizio riga
$ e' la fine riga
praticamente tra inizio e fine riga ci devono essere un numero 
qualsiasi (il numero di occorrenze viene specificato dal carattere *), 
anche zero, di caratteri compresi tra a e z e A e Z.
Quando trova un carattere diverso dalle lettere dell'alfabeto minuscole 
o maiuscole, ad esempio "=" guarda il prossimo carattere 
dell'espressione, che indica il fine riga, e lo compara con il 
carattere della stringa, appunto "=", e siccome trova che e' diverso 
non lo matcha, per cui da false.
Per consentire anche numeri nella stringa, modifica l'espressione in 
"^[a-zA-Z0-9]*$".
Ci sarebbe anche la funzione eregi() che e' uguale alla ereg ma e' 
case-insensitive.
-- 
Mariani "Darkpand" Dario 
dark...@libero.it
IAFo #126       ICQ# 49365960
"L'uomo e' tanto meno se' stesso quanto piu' parla in persona propria:
dategli una maschera e vi dira' la verita'" -- Oscar Wilde

 case-insensitive.
Ereg ed eregi  non fanno differenza  in questo caso perche'
[a-zA-Z] implica gia' case insensitive.
C'e' ancora un piccolo errore, la espressione data e' anche valida
per la stringa vuota, e quindi bisogna sostituire il *
(0 o piu occurenze) con un + (1 o piu)
:-)

Grazie, era quello che cercavo....
ma ho voluto fare una prova sostituendo "preg_match" con "ereg()", ma non
funziona, perché?
Bisogna cambiare l'espressione?
Non ci capisco molto di espressioni regolari
Ciao, Luca

 (:
Ha già risposto Jurgen ;-)


 (0 o piu occurenze) con un + (1 o piu)
Beh, quasto a seconda di come lo intendi... la stringa vuota non 
include caratteri non-alfanumerici :)))
Regolarmente,
