Per prima cosa, invece di usare n variabili, usa un array:
Codice PHP:
<?php
$error = array(); // o $error = []; se hai una versione di php recente
if(trim($nome) == ''){
$error[] = 'Campo non compilato';
}
if(strlen($nome) < 3){
$error[] = 'Il Campo deve contenere almeno 3 caratteri';
}
etc..
?>
<html>
<?php
if(!empty($error)){
echo '<center>';
echo implode('<br/>', $error);
echo '</center>';
}
?>
</html>
Per il preg_match, prova così:
Codice PHP:
if (!preg_match('/^[A-Za-z|àèéìòù\'\s]+$/i', $nome)) {
$error[] = 'Il Campo contiene caratteri non ammessi';
}
Dovrebbe prenderti tutte le lettere (maiuscole o minuscole) + le accentale, apice e spazio
PS: il controllo dei strlen nel tuo codice (quello che hai postato) funziona (ovviamente ho assegnato una stringa a $nome 'a mano')