metaphone

=======================

The metaphone() function can be used for spelling applications.This function returns the metaphone key of the string on success, or FALSE on failure.Its main use is when you are searching a genealogy database. check to see if a metaphone search is offered. It is also useful in making/searching family tree.

Given below is a simple code that calculates and compares two strings to find whether its metaphone codes are equivalent.



html code

==========

<html>

<body>

<form action="test.php" name="test" method="get">

Name1:<input type="text" name="name1" /><br />

Name2:<input type="text" name="name2" /><br />

<input type="submit" name="submit" value="compare" />

</form>



<!--php code begins here -->



<?php

if(isset( $_GET [ 'submit' ]))

{

$str1 = $_GET [ 'name1' ];

$str2 = $_GET [ 'name2' ];

$meta_one = metaphone ( $str1 );

$meta_two = metaphone ( $str2 );

echo "metaphone code for " . $str1 . " is " . $meta_one ;

echo "<br />" ;

echo "metaphone code for " . $str2 . " is " . $meta_two . "<br>" ;

if( $meta_one == $meta_two )

{

echo "metaphone codes are matching" ;

}

else

{

echo "metaphone codes are not matching" ;

}

}

?>



</body>

</html>



Metaphone algorithm was developed by Lawrence Philips.



Lawrence Philips' RULES follow:



The 16 consonant sounds:

|--- ZERO represents "th"

|

B X S K J T F H L M N P R 0 W Y



Exceptions:



Beginning of word: "ae-", "gn", "kn-", "pn-", "wr-" ----> drop first letter

"Aebersold", "Gnagy", "Knuth", "Pniewski", "Wright"



Beginning of word: "x" ----> change to "s"

as in "Deng Xiaopeng"



Beginning of word: "wh-" ----> change to "w"

as in "Whalen"



Transformations:



B ----> B unless at the end of word after "m", as in "dumb", "McComb"



C ----> X (sh) if "-cia-" or "-ch-"

S if "-ci-", "-ce-", or "-cy-"

SILENT if "-sci-", "-sce-", or "-scy-"

K otherwise, including in "-sch-"



D ----> J if in "-dge-", "-dgy-", or "-dgi-"

T otherwise



F ----> F



G ----> SILENT if in "-gh-" and not at end or before a vowel

in "-gn" or "-gned"

in "-dge-" etc., as in above rule

J if before "i", or "e", or "y" if not double "gg"

K otherwise



H ----> SILENT if after vowel and no vowel follows

or after "-ch-", "-sh-", "-ph-", "-th-", "-gh-"

H otherwise



J ----> J



K ----> SILENT if after "c"

K otherwise



L ----> L



M ----> M



N ----> N



P ----> F if before "h"

P otherwise



Q ----> K



R ----> R



S ----> X (sh) if before "h" or in "-sio-" or "-sia-"

S otherwise



T ----> X (sh) if "-tia-" or "-tio-"

0 (th) if before "h"

silent if in "-tch-"

T otherwise



V ----> F



W ----> SILENT if not followed by a vowel

W if followed by a vowel



X ----> KS



Y ----> SILENT if not followed by a vowel

Y if followed by a vowel



Z ----> S