Verifique o idioma da string com base em glifos no PHP

Eu tenho um database MySQL com títulos de livros em inglês e árabe e estou usando uma class PHP que pode transliterar texto árabe automaticamente para o script latino.

Gostaria que meu HTML de saída pareça ser assim:

A book

كتاب (kitaab)

Another book

Existe uma maneira para o PHP determinar o idioma de uma string com base nos caracteres e glifos Unicode usados ​​nela? Estou tentando obter algo assim:

 $Ar = new Arabic('EnTransliteration'); while ($item = mysql_fetch_array($results)) { ... if (some test to see if $item['item_title'] has Arabic glyphs in it) { echo "

$item[item_title] (" . $Ar->ar2en($item['item_title']) . ")

"; } else { echo "

$item[item_title]

"; } ... }

Felizmente, a class não se estrangula ao alimentar caracteres latinos, então, na teoria, eu poderia enviar todos os resultados através da transformação, mas isso parece um desperdício de processamento.

Obrigado!

Editar: ainda não encontrei uma maneira de verificar glifos ou caracteres. Suponho que eu poderia colocar todos os caracteres árabes em uma matriz e verificar se alguma coisa na matriz corresponde a uma parte da string …

Contudo, descobri uma solução provisória que poderia funcionar bem no final. Ele coloca todos os títulos através da transformação, independentemente do idioma, mas apenas exibe a transliteração entre parênteses se a seqüência de caracteres foi alterada:

 while ($item = mysql_fetch_array($mysql_results)) { $transliterate = trim(strtolower($Ar->ar2en($item['item_title']))); $item_title = (strtolower($item['item_title']) == $transliterate) ? $item['item_title'] : $item['item_title'] . " ($transliterate)"; echo "

$item_title

"; }

Isso deve servir:

 preg_match("/\p{Arabic}/u", $item['item_title']) 

Você poderia tornar essa expressão regular um pouco mais sofisticada se você quiser, mas eu não acho que você realmente precisa.

A sequência de escape \p permite que você selecione caracteres com base em suas propriedades Unicode (quando o modificador do padrão u é usado).

O manual do PHP menciona: “As propriedades estendidas, como” Greek “ou” InMusicalSymbols “, não são suportadas pelo PCRE”. Mas isso não é inteiramente mais verdadeiro. O PCRE versão 6.5 adicionou suporte para nomes de scripts .

Aqui está uma class de código aberto PHP para detecção automática de conjunto de caracteres em árabe:

http://www.ar-php.com/php/arabic/index.html#ArCharsetD

Intereting Posts