Search by

byjg / fonemabr

byjg

O Fonema BR tem por objetivo criar uma simplificação de palavras de tal forma que erros de ortografia e vogais não interfiram na busca

Package info

github.com/byjg/php-fonemabr

pkg:composer/byjg/fonemabr

Statistics

Installs: 9 882

Dependents: 0

Suggesters: 0

Stars: 2

Open Issues: 0

6.0.0 2025-11-24 17:54 UTC

This package is auto-updated.

Last update: 2026-10-25 23:50:04 UTC


README

sidebar_key fonemabr
sidebar_category text-content
tags
php text-manipulation text-classification

Fonema BR

Busca que entende o português do Brasil: "brasília" e "brazilia" viram a mesma chave, apesar dos erros de ortografia.

Sponsor Build Status Opensource ByJG Install MCP Server GitHub source GitHub license GitHub release

Observação: Apesar do nome "Fonema" a classe não é uma representação fiel dos fonemas brasileiros sendo apenas uma simplificação.

Nem todas as situações foram testadas. Caso encontre alguma divergência, por favor, sinta-se à vontade para fazer um pull request

Por quê

O soundex() e o metaphone() do PHP foram feitos para o inglês. No português, "brasília", "brazilia" e "brasil" deveriam ser encontrados juntos, e não são: cada erro de ortografia ou de acento vira uma busca sem resultado.

O Fonema BR aplica as regras do português brasileiro. Grave a chave junto com o texto e busque pela chave:

(new Metaphone())->convert('brasília');   // BRAZILIA
(new Metaphone())->convert('brazilia');   // BRAZILIA
Soundex::process('brasil');               // B625

Também inclui um stemmer, para buscar "correndo" e "corrida" pela mesma raiz.

Exemplos

Metafone

$metaphone = new \ByJG\WordProcess\Portuguese\Metaphone();

echo $metaphone->convert('brasília'); // Output: BRAZILIA
echo $metaphone->convert('brazilia'); // Output: BRAZILIA

More details

Soundex

use ByJG\WordProcess\Portuguese\Soundex;

echo Soundex::process('brasília'); // Output: B625
echo Soundex::process('brazilia'); // Output: B625
echo Soundex::process('brasil');   // Output: B625

More details

Stemmer

use ByJG\WordProcess\Portuguese\Stemmer;

$stemmer = new Stemmer();
echo $stemmer->stem('correndo'); // Output: corr
echo $stemmer->stem('correram'); // Output: corr

More details

Use Cases

Uma possível utilização é criar um segundo campo no banco de dados no qual o fonema será armazenado. Sempre que salvar a palavra original você também salva a palavra com fonema.

Dessa forma você poderá pesquisar tanto a palavra original quanto a palavra simplifica com o Fonema.

More details and examples

Installation

composer require byjg/fonemabr

More details

Running Tests

vendor/bin/phpunit

Open source ByJG