/** * Returns the Levenshtein distance calculated between the Metaphone keys of two strings. * * For any two strings, the [Levenshtein distance](http://en.wikipedia.org/wiki/Levenshtein_distance) is the total * number of insert, replace, and delete operations required to transform the first string into the second one. The * algorithm used to render the [Metaphone](http://en.wikipedia.org/wiki/Metaphone) keys is the first-generation * one. * * @param string $string The first string for comparison. * @param string $toString The second string for comparison. * @param bool $transliterate **OPTIONAL. Default is** `true`. Tells whether to transliterate the strings into * the Latin script and then flatten them to ASCII before generating the keys. Since neither the Metaphone or * Levenshtein algorithm is Unicode-aware, the touch of transliteration is something that any arbitrary Unicode * strings would wish for. For example, "こんにちは" is transliterated to "kon'nichiha". * * @return int The Levenshtein distance between the Metaphone keys of the two strings. */ public static function metaphoneDist($string, $toString, $transliterate = true) { assert('is_cstring($string) && is_cstring($toString) && is_bool($transliterate)', vs(isset($this), get_defined_vars())); return CString::levenDist(self::metaphoneKey($string, $transliterate), self::metaphoneKey($toString, $transliterate)); }