如何在PHP中找到两个字符串之间的最大公共子字符串?

是否有快速算法可以查找两个最大公共子字符串,还是NPComplete问题?strings

在 PHP 中,我可以在大海捞针中找到一根针:

<?php

if (strstr("there is a needle in a haystack", "needle")) {
    echo "found<br>\n";
}
?>

我想我可以在其中一个循环中做到这一点,但那将是非常昂贵的!特别是因为我的应用是搜索电子邮件数据库并查找垃圾邮件(即同一个人发送的类似电子邮件)。strings

有没有人有任何PHP代码可以扔在那里?


答案 1

similar_text功能可能是您想要的。

这将计算两个字符串之间的相似性。返回两个字符串中匹配字符的数目

您可能还想看看levenshtein


答案 2

特别是因为我的应用是搜索电子邮件数据库并查找垃圾邮件(即同一个人发送的类似电子邮件)。

我认为你应该看看贝叶斯垃圾邮件推理算法,不一定是最长的公共子字符串。

http://www.devshed.com/c/a/PHP/Implement-Bayesian-inference-using-PHP-Part-1/


推荐