在较长的字符串中查找类似字符

时间:2017-03-14 16:15:14

标签: php string

我们假设我有这样的字符串(它的PHP和德语,但技术和语言都不重要):

$longString1 = 'Aber Max v. maex war nicht da.';

$longString2 = 'Von Mäx Maimilian war auch nicht da.';

$longString3 = 'Grüner Apfel';

$longString4 = 'Maximilian von Maex war da!';

$name = 'Maximilian von Mäx';

了解$ longstring1,例如

  1. MaxMaximilian的缩写(表示它共享前3个字母)
  2. v.von的缩写(表示它首先分享第一个字母并位于Mäx之前)
  3. maex等于Mäx如果一个人不关心案例并且ä提前替换所有ae
  4. 如何估算 $name中是否存在$longString

    我知道PHP中存在的所有实现,如LevenshteinSimilarText等,以计算两个给定字符串的相似性 - 但我不知道如何识别Max v. saex作为$ longString1与我的$name比较有趣。

    我正在寻找一个返回的函数:

     function ($name, $longString) {
    
       return $similarity;
    
       // returns ~0.6 for $longString1
       // returns ~0.7 (of 1) for $longString2
       // returns 0 (of 1) for $longString3
       // returns 1 (of 1) for $longString4
     }
    

    ** 更新 **

    我知道,例如Levenshtein计算两个字符串之间的相似度,但它会为这种简化情况带来巨大的差异:

    $longString1 = 'Max da.'; // pretty similar
    $longString2 = 'Max war heute nicht da.'; // not really similar
    $name = 'Max';
    

    所以这是一个两步的要求:

    1. 识别 Max '之类的内容。在$ longString
    2. 比较' Max '与$ name相似
    3. 我对第1步感兴趣。

0 个答案:

没有答案
相关问题