begin process at 2012 05 27 20:25:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > SOUNDEX 2 FRANCAIS

SOUNDEX 2 FRANCAIS


 Information sur la source

Note :
9,5 / 10 - par 4 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Classé sous :soundex, metaphone, france, comparaison, phonétique Niveau :Initié Date de création :14/03/2006 Date de mise à jour :17/03/2006 12:48:34 Vu / téléchargé :14 782 / 647

Auteur : malalam

Ecrire un message privé
Site perso
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

Bon ben ceci est une première version de soundex2, un soundex francisé.
Il est basé sur un algo décrit ici : http://sqlpro.developpez.com/cours/soundex/ par Frédéric BROUARD.

Il n'est pas encore parfait (j'ai dû manquer 2-3 choses), mais il tourne déjà pas mal.
Il faudra aussi l'optimiser car il risque d'être gourmand, à la longue...!

Soundex est une méthode utilisé pour comparer phonétiquement 2 chaînes. Il existe en natif dans PHP les fonction soundex, ou metaphone, mais elles sont anglicisées.

Cette version-ci est francisé, donc prend en compte les spécificités de la langue française.

PRECISIONS SUR L'UTILITE :
Ces algo, soundex, soundex2, phonex, metaphone, assigne un code à une chaîne donnée. Ce code est calculé en fonction de la phonétique, donc de la prononciation de cette chaîne.
En l'occurence, les 2 algo présents par défaut dans php, soundex () et metaphone () ne prennent en compte que la prononciation anglaise.
celui-ci, basé sur soundex2 (un algo plus performant que soundex), est francisé, donc prend en compte la prononciation française.

Evidemment, 2 chaînes différentes peuvent avoir le même code. Par exemple, ici, 'gros' aura le même code soundex2 que 'grau'.
Ce qui veut dire, dans le cadre d'une recherche sur une base de données contenant des noms, par exemple, on peut effecyuer une recherche phonétique aussi! Bref, le mec a parlé avec un cilent par téléphone, mais il ne s'est pas comment s'écrit exactement son nom de famille...gros, graus, grau, graux, greaux...? etc... Il tapoe par exemple gros, et effectue une recherche soundex. Cette recherche lui ressortira tous les noms dont le code soundex est le même que 'gros'. Donc si le client s'appelait 'Graux', il le trouvera.

Couplé à l'algo de levenshtein (fonction interne php) en plus, on peut avoir une recherche phonétique par pertinence...les codes identiques en premiers, puis ceux un peu différents, etc...jusqu'à un degré de différence voulu.

Le mieux, dans le cadre d'une bdd, est évidemment de stocker le code soundex2 dans la base, histoire de ne pas le recalculer à chaque recherche (pour info, sur ma bécane, 10000 tours de boucle sur le tableau que j'ai mis en exemple dans index.php, donc 10000 * 11 chaînes dont on doit calculer le code soundex2, ça me prend une 20aine de secondes. Et encore, je n'ai pas optimisé l'algo).

Source

  • <?php
  • /**
  • * CLASS soundex2
  • * soundex2 French version
  • * based on the algorithm described here : http://sqlpro.developpez.com/cours/soundex/ by Frédéric BROUARD
  • *
  • * author Johan Barbier <barbier_johan@hotmail.com>
  • */
  • class soundex2 {
  • /**
  • * public sString
  • * main string we work on
  • */
  • public $sString = '';
  • /**
  • * vowels replacement array
  • */
  • private $aReplaceVoy1 = array (
  • 'E' => 'A',
  • 'I' => 'A',
  • 'O' => 'A',
  • 'U' => 'A'
  • );
  • /**
  • * consonnants replacement array
  • */
  • private $aReplaceGrp1 = array (
  • 'GUI' => 'KI',
  • 'GUE' => 'KE',
  • 'GA' => 'KA',
  • 'GO' => 'KO',
  • 'GU' => 'K',
  • 'CA' => 'KA',
  • 'CO' => 'KO',
  • 'CU' => 'KU',
  • 'Q' => 'K',
  • 'CC' => 'K',
  • 'CK' => 'K'
  • );
  • /**
  • * other replacement array
  • */
  • private $aReplaceGrp2 = array (
  • 'ASA' => 'AZA',
  • 'KN' => 'NN',
  • 'PF' => 'FF',
  • 'PH' => 'FF',
  • 'SCH' => 'SSS'
  • );
  • /**
  • * endings replacement array
  • */
  • private $aEnd = array (
  • 'A',
  • 'T',
  • 'D',
  • 'S'
  • );
  • /**
  • * public function build
  • * core function of the class, go through the whole process
  • * @Param string sString : the string we want to check
  • */
  • public function build ($sString) {
  • /**
  • * let's check it's a real string...
  • */
  • if (is_string ($sString)) {
  • $this -> sString = $sString;
  • }
  • /**
  • * remove starting and ending spaces
  • */
  • $this -> sString = trim ($this -> sString);
  • /**
  • * remove special french characters
  • */
  • $this -> trimAccent ();
  • /**
  • * string to upper case
  • */
  • $this -> sString = strtoupper ($this -> sString );
  • /**
  • * let's remove every space in the string
  • */
  • $this -> sString = str_replace (' ', '', $this -> sString);
  • /**
  • * let's remove every '-' in the string
  • */
  • $this -> sString = str_replace ('-', '', $this -> sString);
  • /**
  • * let's process through the first replacement array
  • */
  • $this -> arrReplace ($this -> aReplaceGrp1);
  • /**
  • * let's process through th vowels replacement
  • */
  • $sChar = substr ($this -> sString, 0, 1);
  • $this -> sString = substr ($this -> sString, 1, strlen ($this -> sString) - 1);
  • $this -> arrReplace ($this -> aReplaceVoy1);
  • $this -> sString = $sChar.$this -> sString;
  • /**
  • * let's process through the second replacement array
  • */
  • $this -> arrReplace ($this -> aReplaceGrp2, true);
  • /**
  • * let's remove every 'H' but those prededed by a 'C' or an 'S'
  • */
  • $this -> sString = preg_replace ('/(?<![CS])H/', '', $this -> sString);
  • /**
  • * let's remove every 'Y' but those preceded by an 'A'
  • */
  • $this -> sString = preg_replace ('/(?<!A)Y/', '', $this -> sString);
  • /**
  • * remove endings in aEnd
  • */
  • $length = strlen ($this -> sString) - 1;
  • if (in_array ($this -> sString{$length}, $this -> aEnd)) {
  • $this -> sString = substr ($this -> sString, 0, $length);
  • }
  • /**
  • * let's remove every 'A', but the one at the beginning of the string, if any.
  • */
  • $sChar = '';
  • if ($this -> sString{0} === 'A') {
  • $sChar = 'A';
  • }
  • $this -> sString = str_replace ('A', '', $this -> sString);
  • $this -> sString = $sChar.$this -> sString;
  • /**
  • * let's have only 1 occurence of each letter
  • */
  • $this -> sString = preg_replace( '`(.)\1`', '$1', $this -> sString );
  • /**
  • * let's have the final code : a 4 letters string
  • */
  • $this -> getFinal ();
  • }
  • /**
  • * private function getFinal
  • * gets the first 4 letters, pads the string with white space if the string length < 4
  • */
  • private function getFinal () {
  • if (strlen ($this -> sString) < 4) {
  • $this -> sString = str_pad ($this -> sString, 4, ' ', STR_PAD_RIGHT);
  • } else {
  • $this -> sString = substr ($this -> sString, 0, 4);
  • }
  • }
  • /**
  • * private function trimAccent
  • * remove every special French letters
  • */
  • private function trimAccent () {
  • $this -> sString = htmlentities(strtolower($this -> sString ));
  • $this -> sString = preg_replace("/&(.)(acute|cedil|circ|ring|tilde|uml|grave);/", "$1", $this -> sString );
  • $this -> sString = preg_replace("/([^a-z0-9]+)/", "-", html_entity_decode($this -> sString ));
  • $this -> sString = trim($this -> sString , "-");
  • }
  • /**
  • * private function arrReplace
  • * replacement method, given an array
  • * @Param array tab : the replacement array to be used
  • * @Param bool pref : if false, just replace keys by values; if true, do the same but only with prefix
  • */
  • private function arrReplace (array $tab, $pref = false) {
  • $fromRep = array_keys ($tab);
  • $toRep = array_values ($tab);
  • if (false === $pref) {
  • $this -> sString = str_replace ($fromRep, $toRep, $this -> sString);
  • } else {
  • foreach ($fromRep as $clef => $val) {
  • $length = strlen ($val);
  • if (substr ($this -> sString, 0, $length) === $val) {
  • $this -> sString = substr_replace ($this -> sString, $toRep[$clef], 0, $length);
  • }
  • }
  • }
  • }
  • }
  • ?>
<?php
/**
* CLASS soundex2
* soundex2 French version
* based on the algorithm described here : http://sqlpro.developpez.com/cours/soundex/ by Frédéric BROUARD
*
* author Johan Barbier <barbier_johan@hotmail.com>
*/
class soundex2 {

	/**
	* public sString
	* main string we work on
	*/
	public $sString = '';

	/**
	* vowels replacement array
	*/
	private $aReplaceVoy1 = array (
		'E' => 'A',
		'I' => 'A',
		'O' => 'A',
		'U' => 'A'
	);

	/**
	* consonnants replacement array
	*/
	private $aReplaceGrp1 = array (
		'GUI' => 'KI',
		'GUE' => 'KE',
		'GA' => 'KA',
		'GO' => 'KO',
		'GU' => 'K',
		'CA' => 'KA',
		'CO' => 'KO',
		'CU' => 'KU',
		'Q' => 'K',
		'CC' => 'K',
		'CK' => 'K'
		);

	/**
	* other replacement array
	*/
	private $aReplaceGrp2 = array (
		'ASA' => 'AZA',
		'KN' => 'NN',
		'PF' => 'FF',
		'PH' => 'FF',
            	'SCH' => 'SSS'
		);

	/**
	* endings replacement array
	*/
	private $aEnd = array (
		'A',
		'T',
		'D',
		'S'
		);

	/**
	* public function build
	* core function of the class, go through the whole process
	* @Param string sString : the string we want to check
	*/
	public function build ($sString) {
		/**
		* let's check it's a real string...
		*/
		if (is_string ($sString)) {
			$this -> sString = $sString;
		}
		/**
		* remove starting and ending spaces
		*/
		$this -> sString = trim ($this -> sString);
		/**
		* remove special french characters
		*/
		$this -> trimAccent ();
		/**
		* string to upper case
		*/
		$this -> sString = strtoupper ($this -> sString );
		/**
		* let's remove every space in the string
		*/
		$this -> sString = str_replace (' ', '', $this -> sString);
		/**
		* let's remove every '-' in the string
		*/
		$this -> sString = str_replace ('-', '', $this -> sString);
		/**
		* let's process through the first replacement array
		*/
		$this -> arrReplace ($this -> aReplaceGrp1);
		/**
		* let's process through th vowels replacement
		*/
		$sChar = substr ($this -> sString, 0, 1);
		$this -> sString = substr ($this -> sString, 1, strlen ($this -> sString) - 1);
		$this -> arrReplace ($this -> aReplaceVoy1);
		$this -> sString = $sChar.$this -> sString;
		/**
		* let's process through the second replacement array
		*/
		$this -> arrReplace ($this -> aReplaceGrp2, true);
		/**
		* let's remove every 'H' but those prededed by a 'C' or an 'S'
		*/
		$this -> sString = preg_replace ('/(?<![CS])H/', '', $this -> sString);
		/**
		* let's remove every 'Y' but those preceded by an 'A'
		*/
		$this -> sString = preg_replace ('/(?<!A)Y/', '', $this -> sString);
		/**
		* remove endings in aEnd
		*/
		$length = strlen ($this -> sString) - 1;
		if (in_array ($this -> sString{$length}, $this -> aEnd)) {
			$this -> sString = substr ($this -> sString, 0, $length);
		}
		/**
		* let's remove every 'A', but the one at the beginning of the string, if any.
		*/
		$sChar = '';
		if ($this -> sString{0} === 'A') {
			$sChar = 'A';
		}
		$this -> sString = str_replace ('A', '', $this -> sString);
		$this -> sString = $sChar.$this -> sString;
		/**
		* let's have only 1 occurence of each letter
		*/
		$this -> sString = preg_replace( '`(.)\1`', '$1', $this -> sString );
		/**
		* let's have the final code : a 4 letters string
		*/
		$this -> getFinal ();
	}

	/**
	* private function getFinal
	* gets the first 4 letters, pads the string with white space if the string length < 4
	*/
	private function getFinal () {
		if (strlen ($this -> sString) < 4) {
			$this -> sString = str_pad ($this -> sString, 4, ' ', STR_PAD_RIGHT);
		} else {
			$this -> sString = substr ($this -> sString, 0, 4);
		}
	}

	/**
	* private function trimAccent
	* remove every special French letters
	*/
	private function trimAccent () {
	   $this -> sString = htmlentities(strtolower($this -> sString ));
	   $this -> sString = preg_replace("/&(.)(acute|cedil|circ|ring|tilde|uml|grave);/", "$1", $this -> sString );
	   $this -> sString = preg_replace("/([^a-z0-9]+)/", "-", html_entity_decode($this -> sString ));
	   $this -> sString = trim($this -> sString , "-");
	}

	/**
	* private function arrReplace
	* replacement method, given an array
	* @Param array tab : the replacement array to be used
	* @Param bool pref : if false, just replace keys by values; if true, do the same but only with prefix
	*/
	private function arrReplace (array $tab, $pref = false) {
		$fromRep = array_keys ($tab);
		$toRep = array_values ($tab);
		if (false === $pref) {
			$this -> sString = str_replace ($fromRep, $toRep, $this -> sString);
		} else {
			foreach ($fromRep as $clef => $val) {
				$length = strlen ($val);
				if (substr ($this -> sString, 0, $length) === $val) {
					$this -> sString = substr_replace ($this -> sString, $toRep[$clef], 0, $length);
				}
			}
		}
	}

}
?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

14 mars 2006 16:43:40 :
Ajout des commentaires dans la classe
14 mars 2006 17:29:04 :
ajout de la documentation générée par mon outil ClassDoc, dans docs/francais/index.html
15 mars 2006 12:54:24 :
ajout de quelques précisions dans la description
15 mars 2006 13:33:15 :
Quelques optimisations
15 mars 2006 13:36:00 :
Modif du titre ;-)
15 mars 2006 13:38:21 :
Me suis trompé de zip ;-)
16 mars 2006 09:32:51 :
Correction d'un bug lors du dédoublonnage
16 mars 2006 10:34:54 :
ajout du calcul de la distance de Levensthein avec affichage par pertinence
17 mars 2006 12:48:34 :
Ajout version PHP4

 Sources du même auteur

Source avec Zip ASTUCES/HACK PHP
SQUELETTE DE GESTION DES DROITS
[PHP 5.1] CLASS STRING : NOUVEL EXEMPLE SUR LA SPL
Source avec Zip Source avec une capture [PHP 5.1] PHOTOPHOP (PHPDRAW 2)
Source avec Zip Source avec une capture [PHP5.1] O-LOC : CLASSE ET BACKOFFICE D'INTERNATIONALISATION

 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CARTOGRAPHIE DYNAMIQUE DE LA FRANCE AVEC UNE BASE MYSQL ET D... par buchron
Source avec Zip DICTIONNAIRE DE RIMES par opossum_farceur
Source avec Zip Source avec une capture AJAX MAP EXPLOREUR : FRANCE par djine
Source avec Zip Source avec une capture CARTE DE FRANCE POUR LOCALISER VOS MEMBRES PHP / MYSQL , XML... par nikolo
Source avec Zip PHONEX par malalam

Commentaires et avis

Commentaire de malik7934 le 14/03/2006 21:16:50

Great! Moi j'aime! Ca combiné à du Levenshtein et t'as un bô moteur :)

-> 9

Commentaire de malik7934 le 14/03/2006 21:23:11

Tiens, à en croire http://www-lium.univ-lemans.fr/~carlier/recherche/soundex.html#L4, il y a encore mieux que soundex2 : Phonex!

ABE.

Commentaire de malalam le 15/03/2006 07:37:06 administrateur CS

Je sais...j'ai contacté son créateur, pour savoir si je pouvais m'atteler à phonex aussi (VF je veux dire). Mais il m'a répondu qu'il y subsistait un bug.
Mais je vais m'y attaquer aussi :-) Dès que j'aurais optimisé, et peut-être débugger (suis pas sûr qu'il bugge lol) cette classe-ci.

Merci en tous cas :-)

Commentaire de glad le 15/03/2006 09:43:34

Hello,

Pour ma boîte, j'ai écrit il y a quelques temps un annuaire...

Voici les remplacements que j'effectue, si ça peut aider :

$quoi=preg_replace('*aille*','aye',$quoi);
$quoi=preg_replace('*eille*','aye',$quoi);
$quoi=preg_replace('*ault*','au',$quoi);
$quoi=preg_replace('*air*','er',$quoi);
$quoi=preg_replace('*aie*','e',$quoi);
$quoi=preg_replace('*aud*','au',$quoi);
$quoi=preg_replace('*aux*','au',$quoi);
$quoi=preg_replace('*aus*','au',$quoi);
$quoi=preg_replace('*oux*','ou',$quoi);
$quoi=preg_replace('*ous*','ou',$quoi);
$quoi=preg_replace('*eux*','eu',$quoi);
$quoi=preg_replace('*eus*','eu',$quoi);
$quoi=preg_replace('*eau*','o',$quoi);
$quoi=preg_replace('*ain*','in',$quoi);
$quoi=preg_replace('*ein*','in',$quoi);
$quoi=preg_replace('*tch*','ch',$quoi);
$quoi=preg_replace('*dj*','j',$quoi);
$quoi=preg_replace('*ai*','e',$quoi);
$quoi=preg_replace('*au*','o',$quoi);
$quoi=preg_replace('*sh*','ch',$quoi);
$quoi=preg_replace('*ez*','e',$quoi);
$quoi=preg_replace('*om*','on',$quoi);
$quoi=preg_replace('*an*','en',$quoi);
$quoi=preg_replace('*ei*','e',$quoi);
$quoi=preg_replace('*em*','en',$quoi);
$quoi=preg_replace('*qu*','k',$quoi);
// soundex français, repris en partie ici
$quoi=preg_replace('*h*','',$quoi);
$quoi=preg_replace('*b*','p',$quoi);
$quoi=preg_replace('*c*','k',$quoi);
$quoi=preg_replace('*q*','k',$quoi);
$quoi=preg_replace('*d*','t',$quoi);
$quoi=preg_replace('*m*','n',$quoi);
$quoi=preg_replace('*g*','j',$quoi);
$quoi=preg_replace('*x*','s',$quoi);
$quoi=preg_replace('*z*','s',$quoi);
$quoi=preg_replace('*f*','v',$quoi);

à ++

Commentaire de malalam le 15/03/2006 12:53:03 administrateur CS

Merci, mais je m'en tiens aux algo soundex et cie, c'était le but à la base :-)

Au passage, tu sais que preg_replace prend des tableaux en paramètres? Ce serait plus efficace que ces multiples lignes :-)

Commentaire de TheSin le 16/03/2006 00:12:08

intéressant malalam !
ça pourrait m'être utile un des ces 4 ;-)
9 car aucune source n'est parfaite :-P

Commentaire de malalam le 16/03/2006 20:40:45 administrateur CS

Merci TheSin :-)

Commentaire de malalam le 02/04/2006 11:30:27 administrateur CS

Petite pub : ce package a été nomminé pour les innovations awards de phpclasses, ce mois-ci :-)
Donc, vous seriez très sympas si vous veniez voter pour lui, tant qu'à faire ;-)

http://www.phpclasses.org/browse/package/2972.html

Mercii ;-)

Commentaire de opossum_farceur le 17/04/2006 18:31:55

Quelques menues broutilles à signaler, concernant la version "php4" de ton appli :

- dans "soundex2.cls.php", php4 ne semble pas apprécier la présence du mot-clé "array" à la ligne 177 :
function arrReplace (array $tab, $pref = false) {

- dans "index.php", la fonction "array_combine()" n'étant pas reconnue par php4, il faut l'écrire :

function array_combine($key,$value)
{
$m=count($key);
$n=count($value);

if ($m!=$n || !$n) return false;

for ($i=0;$i<$m;$i++) $rslt[$key[$i]]=$value[$i];
return $rslt;
}

Pour ce code, je n'ai fait qu'appliquer à la lettre les explications données dans l'aide de PHP.
Amicalement.

Commentaire de malalam le 18/04/2006 08:03:44 administrateur CS

Hello,

ah, des oublis; en fait, j'ai fait la version php4 à l'aveugle, je n'ai pas eu l'occasion de la tester sur un serveur interprétant php4.
ceci dit, array est un oubli impardonnable, c'était voyant...array_combine, j'étais persuadé qu'il existait en php4, mea culpa à fond.

Commentaire de Jits_ le 11/06/2007 14:41:42

Salut,

J'ai une erreur à l'execution :

Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in ***\soundex\class\php5\soundex2.cls.php on line 15

Comprend pas ... :(

Commentaire de coockiesch le 14/07/2009 12:24:59

Salut! :-)
   Sais-tu comment a tendance à évoluer la longueur des chaînes que tu passes là dedans? Je suppose que ca raccourci mais je préfère être sûr.

Merci!

Raf

Commentaire de coockiesch le 14/07/2009 12:37:11

Encore une question... Il prend en compte les espaces? Mon but c'est de bosser sur des noms de métiers.
Les métiers "infirmier" "infirmier reponsable" me renvoie les deux "INFR". C'est normal?

Merci!

Raf

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Comparaison de date [ par benett ] J'essaie de créer un site CDThèque et j'ai un gros problème : J'explique :Comment puis-je faire à partir de deux dates (La date de visite du site et l Comparaison de date [ par benett ] Bonjour à tous,Comment peut-on comparer 2 dates et extraire la différences en jours.Ces 2 dates sont encodées via un formulaire au format aaaa/aa/aa.C problème de comparaison de variables string [ par julp ] je cherche comment savoir si deux variables (en fait ce sont des chaînes) sont égales. Pour l'instant j'ai essayé ceci :if (!($a==$b)):instruc;endif;m comparaison de chaines [ par darkhorkeu ] Quelqu'un sait-il si la comparaison de chaine: "str1" == "str2" revient au meme que:!strcmp("str1","str2") merci d'avance Comparaison chaines de caracteres [ par jdaviaud ] salut a tous, voila mon gros probleme actuel :je récupère la valeur de la variable d'environnement HTTP_HOST et je veux savoir si c'est le Domaine A o Comparaison Binaire [ par 6Po ] Bonjour,J'aimerais effectué une comparaison binaire. 6 = 110 2 = 010 Donc normal 6 & 2 devrait faire 010 (soit 2)... si j'effectue le test suivant if pb comparaison string [ par fmazoue ] ca doit etre tout con mais la je vois pas l'erreur je doit etre bigleu !!!voila le bout de code : echo "comparaison entre ".$pwd." et ".$info[$i]["ntp comparaison d'enregistrements dans 2 tables [ par michelvernet2 ] bonjour,j'ai une table ETUDIANT composée des variables $A, $B, $C . cette table contient 30 lignes.j'ai une table REPONSES composée de svariables $RA, une petite aide ! [ par tibo830 ] salut je voudrai juste que par défaut, la case "France soit cochée" merci :o)&lt;INPUT TYPE="RADIO" NAME="type" VALUE="fr"&gt; France &lt;INPUT TYPE=" soundex [ par psg120 ] cherche un generateur pour soundex


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales