levenshtein

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

levenshtein���������ַ���֮��ı༭����

˵��

levenshtein ( string $str1 , string $str2 ) : int
levenshtein ( string $str1 , string $str2 , int $cost_ins , int $cost_rep , int $cost_del ) : int

�༭���룬��ָ�����ִ�֮�䣬ͨ���滻�����롢ɾ���Ȳ������ַ���str1ת����str2����Ҫ�����������ַ������� ���㷨�ĸ��Ӷ��� O(m*n)������ n �� m �ֱ���str1 ��str2�ij��� �������㷨���Ӷ�ΪO(max(n,m)**3)��similar_text()���ʱ���˺��������൱����ģ�������Ȼ�ܺ�ʱ������

����򵥵���ʽ�У��ú���ֻ�������ַ�����Ϊ������������ͨ�����롢�滻��ɾ���Ȳ�����str1ת����str2����Ҫ�IJ���������

�ڶ��ֱ��彫������������IJ�����������롢�滻��ɾ�������Ĵ������˱���ȵ�һ�ָ���ͨ�ú���Ӧ����Ч�ʲ��ߡ�

����

str1

��༭�����е�����һ���ַ���

str2

��༭�����е���һ���ַ���

cost_ins

����������

cost_rep

�����滻����

cost_del

����ɾ������

����ֵ

�˺������������ַ�������֮��ı༭���룬�������һ���ַ����������ȴ������Ƶ�255���ַ�ʱ������-1��

����

Example #1 levenshtein() ���ӣ�

<?php
// ����ƴд����ĵ���
$input 'carrrot';

// Ҫ���ĵ�������
$words  = array('apple','pineapple','banana','orange',
                
'radish','carrot','pea','bean','potato');

// Ŀǰû���ҵ���̾���
$shortest = -1;

// �����������ҵ���ӽ���
foreach ($words as $word) {

    
// �������뵥���뵱ǰ���ʵľ���
    
$lev levenshtein($input$word);

    
// �����ȫ��ƥ��
    
if ($lev == 0) {

        
// ��ӽ��ĵ������������ȫƥ�䣩
        
$closest $word;
        
$shortest 0;

        
// �˳�ѭ���������Ѿ��ҵ�һ����ȫ��ƥ��
        
break;
    }

    
// ����˴ξ�����ϴ��ҵ���Ҫ��
    // ���߻�û�ҵ��ӽ��ĵ���
    
if ($lev <= $shortest || $shortest 0) {
        
// ������ӽ���ƥ���Լ�������̾���
        
$closest  $word;
        
$shortest $lev;
    }
}

echo 
"Input word: $input\n";
if (
$shortest == 0) {
    echo 
"Exact match found: $closest\n";
} else {
    echo 
"Did you mean: $closest?\n";
}

?>

�������̻������

Input word: carrrot
Did you mean: carrot?

�μ�

  • soundex() - Calculate the soundex key of a string
  • similar_text() - ���������ַ��������ƶ�
  • metaphone() - Calculate the metaphone key of a string