代码之家  ›  专栏  ›  技术社区  ›  philfreo

将文本识别为简体中文与繁体中文

  •  6
  • philfreo  · 技术社区  · 14 年前

    2 回复  |  直到 12 年前
        1
  •  4
  •   Mark Baker    14 年前

    我不知道这是否可行,但我会尝试使用iconv来查看它是否能在字符集之间正确转换,并将相同转换的结果与//TRANSLIT和//IGNORE进行比较。如果两个结果匹配,那么字符集转换没有遇到任何无法转换的字符,因此应该匹配。

    $test1 = iconv("UTF-8", "big5//TRANSLIT", $text);
    $test2 = iconv("UTF-8", "big5//IGNORE", $text);
    if ($test1 == $test2) {
       echo 'traditional';
    } else {
       $test3 = iconv("UTF-8", "gb2312//TRANSLIT", $text);
       $test4 = iconv("UTF-8", "gb2312//IGNORE", $text);
       if ($test3 == $test4) {
          echo 'simplified';
       } else {
          echo 'Failed to match either traditional or simplified';
       }
    }
    
        2
  •  0
  •   Henry    8 年前

    big5 gb2312 省略Unicode中存在的许多常用变体,代码依赖于 translit ignore 説話 尽管是传统的中国人 説 在香港是一个常见的变体 說 大5 .

    $test1 = iconv("UTF-8", "big5//IGNORE", $text);
    $test2 = iconv("UTF-8", "gb2312//IGNORE", $text);
    $len1 = mb_strlen($test1);
    $len2 = mb_strlen($test2);
    $len0 = mb_strlen($text) * 0.8; // threshold
    if ($len1 > $len2 && $len1 > $len0) {
        return 'Likely Traditional';
    }
    if ($len2 > $len1 && $len2 > $len0) {
        return 'Likely Simplified';
    }
    return 'Could not identify';