1

我有一个与此类似的问题

但是,我的要求不那么严格。

我只需要检测输入字符串是否包含任何非字母字符串。

如果它确实包含非字母字符串,那么我将选择一个不同的字体文件。

如果它只包含字母字符串,那么我将选择像 AmericanTypeWriter 这样的字体文件。

通过字母字符串,这将包括各种可能的符号,例如逗号、标点符号等。

很难定义字母字符串。

让我定义什么是非字母字符串的示例。

这是中文

并假设字符串为 utf-8 格式。

另一种定义方式:不属于非欧洲语言字符的任何内容都被自动假定为字母字符串。

顺便说一下,我需要在 php 中做这个检测。

4

2 回答 2

1

使用ctype_alnum(string). 文档在这里。此函数接受一个字符串并返回一个bool告诉您该字符串是否包含其他字符的 a。

您还可以使用更复杂的正则表达式,它可以工作并检查空格。以下应该工作。

preg_match("/^[a-zA-Z0-9 ]*$/u", $string) == 1会成功的。

于 2012-06-18T02:58:22.040 回答
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);
}
于 2012-06-27T04:12:41.150 回答