note 43548 added to function.soundex

From: Date: Fri, 25 Jun 2004 01:20:47 +0000
Subject: note 43548 added to function.soundex
Groups: php.notes 
Request: Send a blank email to php-notes+get-71629@lists.php.net to get a copy of this message
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; } ---- Manual Page -- http://www.php.net/manual/en/function.soundex.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+43548 Delete -- http://master.php.net/manage/user-notes.php?action=delete+43548&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+43548&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#71629) next »