在PHP中检测非字母语言字符串

时间:2012-06-18 02:53:24

标签: php regex string utf-8

我对此one

提出了类似的问题

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

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

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

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

按字母字符串,包含各种可能的符号,如逗号,标点符号等。

很难定义字母字符串。

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

这是中文

假设字符串采用utf-8格式。

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

顺便说一下,我需要在php中进行这种检测。

2 个答案:

答案 0 :(得分:1)

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

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

preg_match("/^[a-zA-Z0-9 ]*$/u", $string) == 1可以解决问题。

答案 1 :(得分: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);
}