Трябва да разбера дали даден низ съдържа точно един буквено-цифров знак. Очевидното решение е да се провери дължината и кода ASCII (A-Z
, a-z
, 0-9
) - но проблемът е, че аз работя с utf-8 струни и акцентирани писма като á
, ř
, č
и т.н.
Има ли прост начин да се провери дали един utf-8 символ е буквено-цифров (буква латинска азбука, евентуално с акцент или число)?
Отговори:
0 за отговор № 1Това лесно се прави с a регулярен израз:
$count = preg_match_all("/w/u", $string);
if ($count === 1) {
echo "One alphanumeric character found";
}
w
ще съответства на всеки знак "дума", които са букви, цифри и долни черти. Най- u
модификаторът третира низа като unicode, така че той ще включва ударени знаци.
Ако съвпадение на долните черти е проблем, който можете да използвате [:alnum:]
като характер класа вместо това.