Обнаружение неалфавитной языковой строки в PHP

У меня есть аналогичный вопрос к этому

Однако у меня есть менее строгие требования.

Все, что мне нужно, это определить, содержит ли входная строка какую-либо несимволическую строку.

Если он содержит неалфавитовую строку, тогда я выберу другой файл шрифта.

если он содержит ТОЛЬКО алфавитную строку, тогда я выберу файл шрифта, подобный 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); }