Perdon se qeu es un poco tarde pero a lo mejor a alguien mas le sirve
no lo he usado, lo lei en un post pero creo que en los formularios hay que indicarles para que te acepten los caracteres.
Cita: <form name="formulario_usuario" method="post" accept-charset="UTF-8">
como lo dice aqui:
[URL="http://www.cristalab.com/tutoriales/configurar-tu-web-para-usar-utf-8-c42532l/"]http://www.cristalab.com/tutoriales/configurar-tu-web-para-usar-utf-8-c42532l/[/URL]
con anexion a el uso correcto de preg_match como ya lo indicaron anteriormente
Cita: if(!preg_match("/[\pL\d,$-:._']+$/" ...
espero les sirva suerte!