Если вы «отсеиваете» нелатинские символы, почему бы просто не сделать это:
preg_replace('/[^\p{Latin}]+/u', '', $s)
РЕДАКТИРОВАТЬ: Хорошо, значит, вы пытаетесь подтвердить ввод.Я собирался сказать, используйте это:
preg_match('/^[\p{Latin}]+$/u', $s)
... но оказывается, что это соответствует только латинским буквам .Я думал о недокументированном сокращении Java, \p{L1}
, которое соответствует всему в наборе символов Latin1 (ISO-8859-1), но в PHP вы должны это прописать:
preg_match('/^[\x00-\xFF]+$/u', $s)