OUJOOD.COM
Qu'est-ce que la fonction metaphone() ?
PHP references des fonctions PHP
Disponibilité : PHP 4, PHP 5, PHP 7, PHP 8
La fonction metaphone() est un outil puissant pour générer des clés phonétiques représentant la prononciation d'une chaîne de caractères en anglais. Elle permet de comparer des mots qui sonnent de manière similaire, même s'ils s'écrivent différemment.
Définition et fonctionnement
À quoi sert metaphone() ?
La fonction metaphone() calcule une clé phonétique (metaphone key) qui représente la façon dont une chaîne de caractères est prononcée par un locuteur anglophone. Cette clé permet d'identifier des mots qui ont une prononciation similaire mais une orthographe différente.
Applications courantes :
- Correcteurs orthographiques et suggestions de mots
- Moteurs de recherche phonétique
- Systèmes de détection de doublons basés sur la prononciation
- Validation et vérification de données utilisateur
La fonction retourne la clé metaphone sous forme de chaîne en cas de succès, ou false en cas d'échec.
Syntaxe
metaphone(string $string, int $max_phonemes = 0): string|false
| Paramètre | Description |
|---|---|
|
string |
Requis. La chaîne de caractères dont vous souhaitez calculer la clé phonétique. |
|
max_phonemes |
Facultatif. Limite la longueur de la clé metaphone retournée au nombre de phonèmes spécifié. La valeur par défaut est |
Note importante : La fonction metaphone() est similaire à la fonction soundex(), mais elle offre une précision supérieure. Contrairement à soundex() qui génère une clé de longueur fixe (4 caractères), metaphone() produit une clé de longueur variable et prend mieux en compte les subtilités de la prononciation anglaise.
Historique et algorithme
L'algorithme Metaphone a été développé par Lawrence Philips et publié dans le livre "Practical Algorithms for Programmers" par Binstock & Rex (Addison Wesley, 1995). Cet algorithme améliore significativement les performances de détection phonétique par rapport aux algorithmes précédents comme Soundex.
Exemples pratiques
Exemple 1 : Comparaison de mots similaires
Cet exemple démontre comment metaphone() génère la même clé pour deux mots de prononciation identique :
Exemple : 📋 Copier le code
<?php
// Comparaison de deux mots avec prononciation similaire
var_dump(metaphone('programming'));
echo "<br>";
var_dump(metaphone('programmer'));
// Vérification si deux mots sonnent pareil
if (metaphone('programming') === metaphone('programmer')) {
echo "<br>Ces mots ont une prononciation similaire !";
}
?>
Résultat :
string(7) "PRKRMNK"
string(6) "PRKRMR"
Exemple 2 : Limitation de la longueur de la clé
Dans cet exemple, nous utilisons le paramètre max_phonemes pour limiter la longueur de la clé retournée à 5 caractères :
Exemple : 📋 Copier le code
<?php
// Génération de clés phonétiques limitées à 5 phonèmes
var_dump(metaphone('programming', 5));
echo "<br>";
var_dump(metaphone('programmer', 5));
// Cas d'usage : recherche phonétique
$recherche = 'programming';
$mots = ['programmer', 'programming', 'program', 'programmer'];
echo "<br><br>Mots similaires à '$recherche' :<br>";
foreach ($mots as $mot) {
if (metaphone($mot, 5) === metaphone($recherche, 5)) {
echo "- $mot<br>";
}
}
?>
Résultat :
string(5) "PRKRM"
string(5) "PRKRM"
Exemple 3 : Système de recherche phonétique
Exemple : 📋 Copier le code
<?php
/**
* Fonction de recherche phonétique
* Compare une requête avec une liste de mots
*/
function recherchePhonétique($requete, $listeMots) {
$cleRequete = metaphone($requete);
$resultats = [];
foreach ($listeMots as $mot) {
if (metaphone($mot) === $cleRequete) {
$resultats[] = $mot;
}
}
return $resultats;
}
// Test de la fonction
$dictionnaire = ['night', 'knight', 'nite', 'write', 'right', 'rite'];
$recherche = 'knight';
echo "Recherche phonétique pour : '$recherche'<br>";
$correspondances = recherchePhonétique($recherche, $dictionnaire);
echo "Mots trouvés : " . implode(', ', $correspondances);
?>
Metaphone vs Soundex : Quelle différence ?
| Critère | metaphone() | soundex() |
|---|---|---|
| Précision | Plus précise, prend mieux en compte la prononciation anglaise | Moins précise, algorithme plus ancien |
| Longueur de clé | Variable (peut être limitée) | Fixe (4 caractères) |
| Cas d'usage | Recommandée pour applications modernes | Pour compatibilité avec systèmes anciens |
Recommandation : Pour de nouveaux projets, préférez metaphone() qui offre une meilleure précision. Consultez également soundex() pour comprendre les différences d'implémentation.
|
Fonction précédente: |
Fonction suivante: |