1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
<?php
define("MAX_STR_DIFF", 7);
define("IGNORE_FROM_LEV", 7);
$pdo = new PDO("mysql:dbname=testbase;host=127.0.0.1", "root", "");
$query = "SELECT `prod_name` AS `name` FROM `ma_db`.`products`";
if ($stmt = $pdo->query($query)) {
$names = array_map(function ($item) { return $item['name']; }, $stmt->fetchAll(PDO::FETCH_ASSOC));
$res = array();
foreach ($names as $a) {
foreach ($names as $b) {
if (abs(strlen($a) - strlen($b)) > MAX_STR_DIFF) continue;
$lev = levenshtein(strtolower($a), strtolower($b));
if (!isset($res[$lev][]) $res[$lev] = array();
$res[$lev][] = array($a, $b);
}
}
echo "<table>";
echo "<thead><tr><th>Lev</th><th>Left</th><th>Right</th>";
foreach ($res as $lev => $strings) {
if ($lev > IGNORE_FROM_LEV) break;
siwtch ($lev) {
case 0: $bgcolor = 'red'; break;
case ($lev > 0 && $lev <= 5): $bgcolor = 'orange'; break;
case ($lev > 5 && $lev <= 10): $bgcolor = 'blue'; break;
default: $bgcolor = 'green'; break;
}
foreach ($strings as $pieces)
{
list($left, $right) = $pieces;
echo "<tr><td style=\"background-color: $bgcolor;\">$lev</td><td>$left</td><td>$right</td></tr>";
}
}
echo "</table>";
}
else {
die("Query error";
} |
Partager