如何在 UTF-8 中使用 ctype_alpha

mil*_*ile 4 php utf-8

如何在 UTF-8 中使用 ctype_alpha?

我有这个代码:

if(empty($_POST) === false) {      
    if (isset($_POST['first_name']) && !empty ($_POST['first_name'])){
        if (ctype_alpha($_POST['first_name']) === false) {
            $errors[] = 'Please enter your First Name with only letters!';
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里我检查是否一切正常。如果不是,我会收到错误消息。

但是如果我使用像 š??ž - UTF-8 这样的字母,那么我也会出错。那么我该如何解决这个问题呢?我需要名字只有字母,但必须允许使用 š??ž 等 UTF-8 字符。

n-d*_*dru 5

对拉丁字符使用正则表达式,更改此条件:

if (ctype_alpha($_POST['first_name']) === false)
Run Code Online (Sandbox Code Playgroud)

到:

if (!preg_match('/^[\p{Latin}]+$/u', $_POST['first_name'])
Run Code Online (Sandbox Code Playgroud)

或 - 允许空格:

if (!preg_match('/^[\p{Latin}\s]+$/u', $_POST['first_name'])
Run Code Online (Sandbox Code Playgroud)