eXorithm – Execute Algorithm: View / Run Algorithm soundex

Logo Beta

function soundex ($word
{
  $letters = 'abcdefgijklmnopqrstuvxyz'
  $codes   = '012301202245501262301202'
  
  $word = strtolower$word);
  $soundex = ''
  $count = 0;
  
  for ($ii=0; $iistrlen$word); $ii++) {
    $letter = $word$ii];
    $p = strpos$letters$letter);
    if ($p!==false) {
      if ($codes$p]!==substr$soundex,-1)) {
        $soundex .= $codes$p];
        if ($codes$p]!='0'$count++; //count only consonants
        if ($count>=5) break//if we have 5 characters we're sure we can break
      }
    }
  }
  
  // add initial letter
  $init = substr$word, 0, 1);
  $p = strpos$letters$init);
  if ($p===false)
    $soundex = strtoupper$init).$soundex
  else
    $soundex = strtoupper$init).substr$soundex, 1);
  
  // get rid of the vowels
  $soundex = str_replace'0'''$soundex);
  
  // trim or pad
  if (strlen$soundex)>=4) {
    $soundex = substr$soundex, 0, 4);
  } else {
    $soundex .= str_repeat'0', 4-strlen$soundex));
  }
  
  return $soundex