<?php
function soundex2( $sIn ) {
   if ( $sIn === '' ) return '    ';
   $sIn = strtoupper( $sIn );
   $sIn = strtr( $sIn, 'ÂÄÀÇÈÉÊËŒÎÏÔÖÙÛÜ', 'AAASEEEEEIIOOUUU' );
   $sIn = preg_replace( '`[^A-Z]`', '', $sIn );
   if ( strlen( $sIn ) === 1 ) return $sIn . '   ';
   $convIn = array( 'GUI', 'GUE', 'GA', 'GO', 'GU', 'CA', 'CO', 'CU',
'Q', 'CC', 'CK' );
   $convOut = array( 'KI', 'KE', 'KA', 'KO', 'K', 'KA', 'KO', 'KU', 'K',
'K', 'K' );
   $sIn = str_replace( $convIn, $convOut, $sIn );
   $sIn = preg_replace( '`(?<!^)[EIOU]`', 'A', $sIn );
   $convIn = array( '`^KN`', '`^(PH|PF)`', '`^MAC`', '`^SCH`', '`^ASA`',
'`(?<!^)KN`', '`(?<!^)(PH|PF)`', '`(?<!^)MAC`', '`(?<!^)SCH`',
'`(?<!^)ASA`' );
   $convOut = array( 'NN', 'FF', 'MCC', 'SSS', 'AZA', 'NN', 'FF', 'MCC',
'SSS', 'AZA' );
   $sIn = preg_replace( $convIn, $convOut, $sIn );
   $sIn = preg_replace( '`(?<![CS])H`', '', $sIn );
   $sIn = preg_replace( '`(?<!A)Y`', '', $sIn );
   $sIn = preg_replace( '`[ATDS]$`', '', $sIn );
   $sIn = preg_replace( '`(?!^)A`', '', $sIn );
   $sIn = preg_replace( '`(.)\1`', '$1', $sIn );
   return substr( $sIn . '    ', 0, 4);
}
?>