PHP - 检查字符串是否为多字节字母数字字符

Mar*_*jer 5 php utf-8 multibyte

我需要确定一个字符串是否只包含一个字母数字字符。显而易见的解决方案将是检查的长度和ASCII码(A-Za-z0-9) -但问题是,我用UTF-8字符串的工作和重音封样á??等等。

有没有一种简单的方法来检查 UTF-8 字符是否是字母数字(拉丁字母,可能是重音符号,或数字)?

Mat*_*t S 0

使用正则表达式可以轻松完成此操作:

$count = preg_match_all('/\w/u', $string);
if ($count === 1) {
    echo "One alphanumeric character found";
}
Run Code Online (Sandbox Code Playgroud)

\w将匹配任何“单词”字符,即字母、数字和下划线。修饰符u将字符串视为 unicode,因此它将包含重音字符。

如果匹配下划线是一个问题,您可以使用字符类[:alnum:]匹配来代替。