Newsgroup: it.comp.www.php
Titolo: Check su nome con eregi(); -> non becco accenti

Salve, devo fare un controllo su una variabile
deve essere un nome oppure piu uno
es :
Pippo
Pippo Pluto
Pippo Baudo
Pppo Baudo Pluto
faccio così
 if(eregi("(^[a-z]{3,} [a-z]{3,}$)|(^[a-z]{3,}$)", trim($_POST['nome']))) {
echo 'y';
 } else {
echo 'n';
 }
pero questo non mi becca
nomi con l'accento
es
Pluto Pippò
e piu di due nome
es:
Pippo pippone depippa
grazie in anticipo per qualsiasi suggerimento
Corrado Modica
www.pachinoglobale.com


be adesso riesco a beccare piu di un nome
 if(eregi("(^[a-z]{3,}( [a-z]{3,}){0,}$)", trim($_POST['nome']))) {
echo 'y';
 } else {
echo 'n';
 }
però nomi con accento ancora no
qualche suggerimento???
Corrado Modica
www.pachinoglobale.com

 Pppo Baudo Pluto
Ti ho scritto un piccolo esempio facilmente adattabile. Dai un'occhiata a
cosa fa.
Ho ammesso all'interno delle parole accettate anche il punto e l'apostrofo
(per stringhe tipo "Sig.na D'Agostino").
Togliendo il punto non riconosce "Sig.na"... ma solo "Sig" .. togliendo
anche l'apostrofo riconosce solo "Agostino". Lasciando l'apostrofo potresti
avere risultati che non gradisci: "dall'alto" riconosciuto come una sola
parola.
Beh... è solo un esempio.. non è che debba proprio andare a puntino.. :)
dipende da cosa ne devi fare :)
<?php
$stringa = "    Il sig. Paperino, nipote di Paperon De' Paperoni, prima o
poi si farà la 
sig.na
 Paperina (forse...). Che notizia! Datemi un bicchiere
d'acqua!!!  ";
//Se trova le parole (maiuscole-minuscole, contenenti o meno apostrofi o
punti, accentate o meno, delimitate non solo da spazi ma anche da
punteggiatura) più lunghe di tre caratteri, dice Sì, altrimenti dice No
if(preg_match_all("/\b([\w'.]{3,})\b/i", $stringa, $parole_trovate)) {
$numero = count($parole_trovate[0]);
echo "Sì... ho trovato $numero parole che soddisfano il criterio:<br><br>";
    for ($i=0;$i<$numero;$i++) {
        echo $parole_trovate[0][$i]."<br>";
    }
} else {
     echo "No.. non ho trovato niente<br>";
}
?>


si questo mi da TRUE se ci sono nomi accentati
Pippo Falò ------->True
però mi da anche true se ho qualcosa tipo:
Antonio 456 Maria
mi servirebbe invece che dia false al controllo se ci sono numeri
la variable $stringa deve essere un nome o più di un nome
quindi lettere, lettere accentate e anche apostrofi
ma niente numeri.
questo mi funziona però le parole accentate non le fa passare
if(eregi("(^[a-z]{3,}( [a-z]{3,}){0,}$)", trim($_POST['nome']))) {
...prosegui lo script;
 } else {
...torna indietro e correggi i dati
 }
Vediamo se mi viene in mente qualcos'altro
Grazie Comunque
Corrado Modica
www.pachinoglobale.com

 mi servirebbe invece che dia false al controllo se ci sono numeri
Non devi cambiarla di molto:
preg_match_all("/\b([a-z'.]{3,})\b/i", $stringa, $parole_trovate
basta che ci metti quello che vuoi che sia ammesso nelle parole

 ha scritto nel messaggio
news:jhY59.59909$n04.1...@twister2.libero.it...

Pardon.. sono un po' fuso.. vista anche l'ora...
preg_match_all("/\b([a-zòóàùèéì'.]{3,})\b/i", $stringa, $parole_trovate)
dovrebbe bastarti.. se è per l'italiano (che è eptavocalico per quanto
riguarda il vocalismo tonico.) Sennò aggiungi quello che vuoi.


in effetti quello che cercavo era questo
[a-zтуащийм'.]
adesso provo
Grazie
Corrado