Compare two string and get a similarity percentage. Note that I did not write the algorithms myself, see down this document for the full credits.
Some methods are usable in production, some are not, see usage for informations. Pull requests are more than welcomed!
You can install this package via composer:
$ composer require atomescrochus/laravel-string-similarities
Then you have to install the package' service provider, unless you are running Laravel >=5.5 (it'll use package auto-discovery) :
// config/app.php
'providers' => [
...
Atomescrochus\StringSimilarities\StringSimilaritiesServiceProvider::class,
];
$comparison = new \Atomescrochus\StringSimilarities\Compare();
// the functions returns similarity percentage between strings
$jaroWinkler = $comparison->jaroWinkler('first string', 'second string'); // JaroWinkler comparison
$levenshtein = $comparison->levenshtein('first string', 'second string'); // Levenshtein comparison
$smg = $comparison->smg('first string', 'second string'); // Smith Waterman Gotoh comparison
$similar = $comparison->similarText('first string', 'second string'); // Using "similar_text()"
// This next one will return an array containing the results of all working comparison methods
// plus an array of 'data' that includes the first and second string, and the time in second it took to run all
// comparison. BE AWARE that comparing long string can results in really long compute time!
$all = $comparison->all('first string', 'second string');
Please see CHANGELOG for more information on what has changed recently.
HELP NEEDED.
Please see CONTRIBUTING and CONDUCT for details.
If you discover any security related issues, please email jp@atomescroch.us instead of using the issue tracker.
- Jean-Philippe Murray
- joshweir over StackOverflow for pointing me to the solutions and algorithms for the Jaro Winkler and Smith Waterman Gotoh comparison
- All Contributors
The MIT License (MIT). Please see License File for more information.