note 33435 added to function.soundex

From: Date: Wed, 25 Jun 2003 22:01:44 +0000
Subject: note 33435 added to function.soundex
Groups: php.notes 
Request: Send a blank email to php-notes+get-51012@lists.php.net to get a copy of this message
Ik made the Soundex in JavaScript. http://www.vanderharg.nl/soundex.php Explanation of the algoritm is on the above page. It returns two values if a name has "van der" or something alike in it. One with that in the Soundex test and one without. The use of regular expressions makes the ectual soundex algoritm short. Two conditions of the algoritm I did remove because in this implementation they are redundant. <script language="javascript"> var koppelteken = ""; // kan ook - zijn. var vv=new Array( "de la ", "in het ", "in 't ", "op den ", "op het ", "op de ", "op te ", "op 't ", "up te", "uit de ", "van den ", "van der ", "van het ", "van de ", "van 't ", "opte ", "upte ", "con ", "den ", "der ", "ten ", "ter ", "van ", "de ", "di ", "du ", "la ", "le ", "te ", "vd ", "l' ", "l'", "'t "); function removePrefix(name) { i=0; var strippedresult = ""; while ((strippedresult=="")&&(i<vv.length)) { if (name.substr(0,vv[i].length)==vv[i].toUpperCase()) strippedresult = name.substr(vv[i].length); i++; } return strippedresult; } function Soundex(name) { if (name.length>1) { // zet om naar hoofdletters. name=name.toUpperCase(); // converteer leestekens re = new RegExp ('[ÄÀÁÃ]+', 'gi'); name = name.replace(re, 'A'); re = new RegExp ('[ËÈÉ]+', 'gi'); name = name.replace(re, 'E'); re = new RegExp ('[ÏÌÍ]+', 'gi'); name = name.replace(re, 'I'); re = new RegExp ('[ÖÒÓÕ]+', 'gi'); name = name.replace(re, 'O'); re = new RegExp ('[ÜÙÚ]+', 'gi'); name = name.replace(re, 'U'); re = new RegExp ('[Ý]+', 'gi'); name = name.replace(re, 'Y'); // behandel voorvoegsels var result=Soundex(removePrefix(name)); if (result!="") result+="\n"; // eerste letter result += name.substr(0,1); // codeer de rest in cijfers name=name.substr(1); // haal A, E, I, O, U, H, W, en Y er uit. re = new RegExp ('[AEIOUHWY ]+', 'gi'); name = name.replace(re, ''); // Zet om naar cijfers met tabel. // haal dubbele cijfers er uit. re = new RegExp ('[BFPV]+', 'gi'); name = name.replace(re, '1'); re = new RegExp ('[ÇCGJKQSXZ]+', 'gi'); name = name.replace(re, '2'); re = new RegExp ('[DT]+', 'gi'); name = name.replace(re, '3'); re = new RegExp ('[L]+', 'gi'); name = name.replace(re, '4'); re = new RegExp ('[MN]+', 'gi'); name = name.replace(re, '5'); re = new RegExp ('[R]+', 'gi'); name = name.replace(re, '6'); // vul aan tot 3 cijfers. while (name.length<3) name += "0"; // kap af op 3 cijfers if (name.length>3) name=name.substr(0,3); return result+koppelteken+name; } else return ""; } </script> ---- Manual Page -- http://www.php.net/manual/en/function.soundex.php Edit Note -- http://master.php.net/manage/user-notes.php?action=edit+33435 Delete Note -- http://master.php.net/manage/user-notes.php?action=delete+33435&report=yes Reject Note -- http://master.php.net/manage/user-notes.php?action=reject+33435&report=yes

« previous php.notes (#51012) next »