我有这种类似的问题一个
不过,我有一个不太严格的要求。
所有我需要的是检测如果输入的字符串包含非字母串。
如果它确实包含非字母串,那么我会选择不同的字体文件。
如果它仅包含字母串,那么我会选择像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);
}