per i caratteri accentati minuscoli da tastiera metti una backslash \à\è\étc.
ho fatto questa di prova e dovrebbe funzionare (non ho messo il trattino perché non mi pare che ci vada nei cognomi).
Codice PHP:
$stringa = " d. Mariònè di Vàl d'Abruzzésì ";
$regExp = "^([a-z\\'\\ò\\à\\ì\\è\\é\\ù]+(\\.[[:space:]])?[[:space:]]*)+$";
if ( eregi($regExp,ltrim($stringa)) ) echo "è un cognome
";
else echo "non è un cognome
";
Mentre per altri tipi di caratteri tipo ã Ã etc mi si è posto il problema e credo che l'unico modo sia quello di usare preg_match() e usare i valori esadecimali del carattere
Codice PHP:
$stringa = " d. Mariònè di Vàl d'ãbruzzésì ";
// ho messo la "ã"
$val = dechex(ord("ã"));
$regExp = "/^(?:[a-z\\'\\ò\\à\\ì\\è\\é\\ù\\x$val]+(?:\\.\\s)?\\s*)+$/i";
if (preg_match($regExp,ltrim($stringa))) echo "e' un cognome
";
else echo "non è un cognome
";
Ogni carattere particolare che vuoi controllare va aggiunto (sia maiscolo che minuscolo).
altri modi non ne ho visti (se non mb_ereg() ma sinceramente non saprei).