У меня есть аналогичный вопрос к этому
Однако у меня есть менее строгие требования.
Все, что мне нужно, это определить, содержит ли входная строка какую-либо несимволическую строку.
Если он содержит неалфавитовую строку, тогда я выберу другой файл шрифта.
если он содержит ТОЛЬКО алфавитную строку, тогда я выберу файл шрифта, подобный AmericanTypeWriter.
По алфавитной строке, которая включала бы всевозможные возможные символы, такие как запятые, пунктуации и т. Д.
Трудно определить буквенную строку.
Позвольте мне определить, что является примером неалфавитной строки.
这 是 中文
И предполагаем формат utf-8 для строки.
Другой способ определить: все, что не подпадает под неевропейский язык, автоматически считается буквенной строкой.
Кстати, мне нужно сделать это обнаружение на php.
Используйте ctype_alnum(string)
. Документация здесь . Эта функция принимает строку и возвращает bool
который сообщает вам, содержит ли строка другие символы или нет.
Вы также можете использовать более сложное регулярное выражение, которое будет работать и проверять пробелы. Следующее должно работать.
preg_match("/^[a-zA-Z0-9 ]*$/u", $string) == 1
будет делать трюк.
Я нашел лучший ответ. Вдохновленный https://stackoverflow.com/a/4923410/80353
header('Content-Type: text/html; charset=utf-8'); mb_internal_encoding('utf-8'); function isThisChineseText($text) { return preg_match("/\p{Han}+/u", $text); }