PHP检查文本是英文语言?

时间:2018-02-26 05:52:41

标签: php regex

大家好,下面给出的代码我想测试的字符串是英文还是古吉拉特语。但程序提供错误输出我该如何解决?如果字符是ASCII是从0A80-0AFF这个长度然后认为古吉拉特人认为是英语。

代码:

if (!preg_match('/[^A-Za-z0-9]/', $Query)){
    echo 'English';
}
else{
    echo 'Gujarati';
}

输入:

A/4

输出:

Gujarati

预期产出:

English

1 个答案:

答案 0 :(得分:2)

如果您只有英语古吉拉特语,为什么不反过来呢?

if (preg_match('/\x{0A80}-\x{0AFF}/u', $Query)){
    echo 'Gujarati';
}
else{
    echo 'English';
}

基本上,如果您使用古吉拉特语语言中的一个字符,则会将其检测为Gujarati,否则它将为English。但请注意,ありがとうélève等也会被视为英语

查看此Unicode图表:https://unicode.org/charts/PDF/U0A80.pdf以准确定义必须考虑的范围。

<强>说明

  1. \x{0A80}-\x{0AFF}匹配代码点U+0A80U+0AFF
  2. 之间的字符
  3. /u用于regex中的Unicode支持