Exemplo n.º 1
0
 /**
  * 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));
 }