note 43548 deleted from function.soundex by nlopess
| From: | nlopess@php.net | Date: | Fri, 25 Jun 2004 09:30:51 +0000 |
| Subject: | note 43548 deleted from function.soundex by nlopess | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-71656@lists.php.net to get a copy of this message | ||
Note Submitter: brodseba at brodseba dot com
----
Where a soundex function for string in french. The function is not optimize.
Voici la fonction soundex pour la language française. La fonction n'est probablement pas
optimisée.
function soundex_fr($a_sString)
{
// Soundex retourné.
$soundex = "";
// Supprimer les éventuels 'espace' initiaux.
$a_sString = trim($a_sString);
// Mettre le mot en majuscule
$a_sString = strtoupper($a_sString);
// Remplacer les caractères spéciaux.
str_replace('À', 'A', $a_sString);
str_replace('Ä', 'A', $a_sString);
str_replace('Â', 'A', $a_sString);
str_replace('É', 'E', $a_sString);
str_replace('È', 'E', $a_sString);
str_replace('Ê', 'E', $a_sString);
str_replace('Ë', 'E', $a_sString);
str_replace('Ï', 'I', $a_sString);
str_replace('Î', 'I', $a_sString);
str_replace('Ù', 'U', $a_sString);
str_replace('Û', 'U', $a_sString);
str_replace('Ü', 'U', $a_sString);
str_replace('Ç', 'C', $a_sString);
// Garder la première lettre
$soundex = substr($a_sString, 0, 1);
// Supprimer les lettres A, E, I, O, U, Y, H et W
$search = array('A', 'E', 'I', 'O', 'U',
'Y', 'H', 'W');
str_replace($search, '', $a_sString);
// Remplacer les lettres restantes par le chiffre associé dans la table
$a_sString = substr($a_sString, 1, strlen($a_sString) - 1);
$un = array('B', 'P');
$deux = array('C', 'K', 'Q');
$trois = array('D', 'T');
$quatre = array('L');
$cing = array('M', 'N');
$six = array('R');
$sept = array('G', 'J');
$huit = array('X', 'Z', 'S');
$neuf = array('F', 'V');
$a_sString = str_replace($un, '1', $a_sString);
$a_sString = str_replace($deux, '2', $a_sString);
$a_sString = str_replace($trois, '3', $a_sString);
$a_sString = str_replace($quatre, '4', $a_sString);
$a_sString = str_replace($cing, '5', $a_sString);
$a_sString = str_replace($six, '6', $a_sString);
$a_sString = str_replace($sept, '7', $a_sString);
$a_sString = str_replace($huit, '8', $a_sString);
$a_sString = str_replace($neuf, '9', $a_sString);
// Supprimer les chiffres répétés (garder une occurence)
for($i = 1; $i < strlen($a_sString); $i++)
{
if(substr($a_sString, $i, 1) != substr($soundex, strlen($soundex), 1))
{
$soundex .= substr($a_sString, $i, 1);
}
}
// Si le code obtenu contient plus de 4 éléments, conserver les 4 éléments les plus à gauche
$soundex = substr($soundex, 0, 4);
// Si le code obtenu contient moins de 4 éléments, compléter à droite par des espaces
while(strlen($soundex) != 4)
{
$soundex .= " ";
}
return $soundex;
}