星期二,2009年01月6日 04:08

两个PHP冷门函数的简要使用

相信你在使用Google或者Baidu搜索的时候,肯定碰到过他们的关键词提示。

对于搜索引擎来说,他们有一整套分词技术及完整的词库。而对于一般简单的PHP应用来说,做到这种完善的分词又是很困难的。
其实php中有两个函数,可以近似的完成这样的功能。

这两个函数就是:levenshtein 和 similar_text
以下分别是这两个函数的官方解释:
http://www.php.net/manual/en/function.levenshtein.php
http://www.php.net/manual/en/function.similar-text.php

我们来简单看一下使用这两个函数的效果。

echo levenshtein(“ubuntu”,”ubuntw”);
    echo “<br>”;
    echo levenshtein(“ubuntu”,”aubvntu”);
        echo “<br>”;
    echo levenshtein(“ubuntu”,”vbvntw”);
        echo “<br>”;
    echo levenshtein(“ubuntu”,”ubuntu”);

这段代码的输出是:

1
2
3
0

也就是说,对于levenshtein函数,两个字符相似度越高,其返回值越小,如果相等,则函数返回0。

再来看看similar_text函数

similar_text(“ubuntu”,”ubuntw”,$a);
             echo $a;
    echo “<br>”;
     similar_text(“ubuntu”,”aubvntu”,$a);
         echo $a;
        echo “<br>”;
     similar_text(“ubuntu”,”vbvntw”,$a);
         echo $a;
        echo “<br>”;
     similar_text(“ubuntu”,”ubuntu”,$a);
         echo $a;

代码输出:

83.333333333333
76.923076923077
50
100

与levenshtein相反,similar_text则是相似度越高,其值越大,如果相等,则返回100。

了解了这两个函数的用法,我们可以通过这两个函数来达成类似最开始Google的那种效果了。当然还得有一些技术前提,
比如在某些CMS中,像DedeCMS,它本身维护了一个关键词的数据表,这样我们在每次搜索的时候,可以使用上面两个
函数对DedeCMS的关键词表进行逐一匹配,然后设定一个匹配限制,如果大于(小于)该值,则可以给出类似Google那样
的提示了。

 

分类: php, 学习资料
您可以通过RSS 2.0订阅本文的评论。 您也可以发表评论,或者在您的网站引用本文

现有1条评论

Trackback