Pergunta

Eu quero ter um processo diferente para a palavra em inglês e a palavra japonesa nesta função

function process_word($word) {
   if($word is english) {
     /////////
   }else if($word is japanese) {
      ////////
   }
}

obrigada

Foi útil?

Solução

Uma solução rápida que não precisa do mb_string extensão:

if (strlen($str) != strlen(utf8_decode($str))) {
    // $str uses multi-byte chars (isn't English)
}

else {
    // $str is ASCII (probably English)
}

Ou uma modificação do solução fornecida por @Alexander Konstantinov:

function isKanji($str) {
    return preg_match('/[\x{4E00}-\x{9FBF}]/u', $str) > 0;
}

function isHiragana($str) {
    return preg_match('/[\x{3040}-\x{309F}]/u', $str) > 0;
}

function isKatakana($str) {
    return preg_match('/[\x{30A0}-\x{30FF}]/u', $str) > 0;
}

function isJapanese($str) {
    return isKanji($str) || isHiragana($str) || isKatakana($str);
}

Outras dicas

Esta função verifica se uma palavra contém pelo menos uma letra japonesa (encontrei o alcance Unicode para letras japonesas em Wikipedia).

function isJapanese($word) {
    return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $word);
}

Você pode experimentar a API de tradução do Google que tem uma função de detecção:http://code.google.com/apis/language/translate/v2/using_rest.html#detect-language

Tente com mb_detect_encoding Função, se a codificação for Euc-JP ou UTF-8 / UTF-16, pode ser japonês, caso contrário, inglês. Melhor é se você puder garantir qual codificação de cada idioma, pois as codificações UTF podem ser usadas para muitos idiomas

O texto em inglês geralmente consiste apenas em caracteres ASCII (ou melhor, digamos, caracteres na linha ASCII).

Você pode tentar converter o charset e verificar se ele for bem -sucedido.

Dê uma olhada no iconv: http://www.php.net/manual/en/function.iconv.php

Se você puder converter uma string para ISO-8859-1, pode ser o inglês, se você puder converter para ISO-2022-JP, é provevelmente japonês (posso estar errado para os charsets exatos, você deve pesquisar no Google para eles).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top