Back-End

31 jan, 2017

Como converter palavras em inglês para números em PHP

Publicidade

Existem várias soluções para escrever números utilizando palavras em inglês e outros idiomas. No entanto, para fazer o contrário não é fácil.

O pacote PHP Convert Words to Numbers faz isso. Pega um número expressado em inglês, trabalha e retorna o valor que o número representa.

O que é o pacote PHP Convert Words to Numbers?

Ele foi criado para converter uma série de palavras que representem dígitos para os números originais, por exemplo, mil para 1000, cem para 100 e assim em diante.

A principal razão pela qual eu criei esse pacote foi ajudar um outro desenvolvedor que estava buscando isso. Quando eu tive um tempo livre, eu escrevi ele após algumas pesquisas.

Desafios enfrentados para fazer funcionar

O desenvolvimento desse pacote não foi trivial. Enfrentei alguns desafios para fazer ele funcionar com as muitas variações dos números como textos em inglês.

Um dos problemas é que às vezes a ordem das palavras para representar o mesmo número podem ser diferentes. Outro é que os usuários cometem erros de escrita, ou utilizam espaços extras entre as palavras, ou digitam caracteres inesperados.

O pacote também suporta o jeito de representar os números tanto em inglês ocidental quanto em inglês indiano ocidental utilizando, por exemplo, palavras como bilhão ou “crore” (10 milhões, unidade de medida utilizada na Índia, principalmente para se referir às Rupias)

Funcionalidades do pacote

Esse pacote suporte várias funcionalidades interessantes, como, por exemplo, pode automaticamente detectar se o número introduzido é uma variante do inglês ocidental ou indiano.

Ele pode também entender números como mil e duzentos ou dois mil e quinhentos.

O pacote também pode realizar a soma de expressões como mil e duzentos mais mil e duzentos mais dois mil e trezentos.

Os valores retornados podem ser retornados como inteiros ou em formato string de acordo com o idioma detectado (Inglês ocidental ou Inglês indiano).

Esse pacote é bem fácil de ser utilizado. É só criar um objeto e chamar o método displayNumbers.

 

$objWordsToNumbers = new cWordsToNumbers();
echo $objWordsToNumbers -> displayNumbers( "ninty thousand nine hundred and ninty nine" );

Limitações

Atualmente o pacote ainda tem algumas limitações. Por exemplo os números indianos são limitados a noventa e nove lakh (cem mil) e noventa e nove crore (99.99.999.99.99.999).

O limite ocidental é novecentos e noventa e nove bilhões (999.999.999.999).

Utilizar as palavras na ordem errada pode retornar resultados indesejados.

Conclusão

PHP Convert Words to Numbers realiza uma operação incomum de reverter texto em uma representação de dígitos.

Apesar de ser um processo difícil que pode falhar em alguns casos inesperados, ele funciona bem de uma maneira geral e pode ser útil para muitos desenvolvedores com aplicações que precisem analisar textos com quantidades numéricas.

Se você gostou do artigo, por favor, compartilhe. Se tiver perguntas, deixe seus comentários aqui.

***

Mohammed Asad faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://www.phpclasses.org/blog/package/10082/post/2-PHP-Tutorial-on-How-to-Convert-English-Words-to-Numbers.html