Ce face soundex / metaphone
soundex returnează un cod de 4 caractere (o literă și trei cifre), iar metaphone un cod format din litere, de lungime variabilă. Cuvintele care sună la fel au de obicei același cod, chiar dacă sunt scrise diferit.
Sunt folosite pentru căutări tolerante la greșeli de scriere, de exemplu în liste de nume. Regulile sunt făcute pentru pronunția engleză, deci pentru limba română rezultatele sunt doar aproximative. metaphone are un al doilea parametru, $max_phonemes, care limitează lungimea codului.
Parametri
| Parametru | Descriere |
|---|---|
$string |
Cuvântul analizat. |
$max_phonemes |
Doar la metaphone, opțional: lungimea maximă a codului. 0 înseamnă fără limită. |
Ce returnează
Codul fonetic, ca text.
Exemple
Exemplul 1: Nume scrise diferit, același cod
<?php
foreach (["Popescu", "Popesku", "Popa"] as $nume) {
echo "$nume: soundex " . soundex($nume) . ", metaphone " . metaphone($nume) . "\n";
}
Rezultat
Popescu: soundex P120, metaphone PPSK
Popesku: soundex P120, metaphone PPSK
Popa: soundex P100, metaphone PP
Exemplul 2: Căutare tolerantă la greșeli
<?php
$clienti = ["Ionescu", "Ionesku", "Ionita", "Marinescu"];
$cautat = "Ionescu";
foreach ($clienti as $nume) {
if (metaphone($nume) === metaphone($cautat)) {
echo "Posibilă potrivire: $nume\n";
}
}
Rezultat
Posibilă potrivire: Ionescu
Posibilă potrivire: Ionesku
Greșeli frecvente
- Te aștepți ca diacriticele să fie înțelese. Funcțiile ignoră caracterele care nu sunt litere englezești: elimină întâi diacriticele cu
strtr.
Comenzi înrudite
levenshtein: Calculează câte modificări de caractere sunt necesare ca un text să devină altul (distanța Levenshtein).similar_text: Calculează cât de asemănătoare sunt două texte, ca număr de caractere comune și ca procent.