【发布时间】:2017-09-13 04:28:11
【问题描述】:
我搜索了系统,但找不到任何我能理解的帮助,所以这里......
我需要在 php.ini 中找到一个字符串的近似匹配。
基本上我正在检查所有 $names 是否都在 $cv 字符串中,如果没有,它会将标志设置为 true。
foreach( $names as $name ) {
if ( strrpos( $cv, $name ) === false ) {
$nonameincv = true;
}
}
它工作正常。但是,我有一个 $cv = "marie_claire" 和一个 $name = "clare" 的情况,它们设置了标志(当然)但我很喜欢让 strpos 按原样“找到”。
是否可以进行近似匹配,以便如果字符串中的任何位置有 1 个额外的字母,它会匹配?比如这样:
$name = "clare" 在 $cv = "marie_claire" 中找到
$name = "caire" 在 $cv = "marie_claire" 中找到
$name = "laire" 在 $cv = "marie_claire" 中找到
等等……
【问题讨论】:
-
这个数据库是否与任何机会有关?如果是这样,可能有一个替代dev.mysql.com/doc/refman/5.7/en/string-functions.html
-
恐怕这是一个很深很深的兔子洞。 “足够相似”到底有多相似?显然“clare”和“marie_claire”远非完全匹配;你想走多远……? “ie_c”仍然有效吗?这是一个精确的子匹配。还是“清楚”?还是“mrclr”?
-
对于 PHP similar_text 或 levenshtein。对于数据库,
FULL TEXT SEARCH. -
你想使用
levenshtein函数,例子和文档php.net/manual/en/function.levenshtein.php -
为了将来参考,php approximate string matching 导致 Gabriel Heming 引用的两个函数。 GIYF。
标签: php search strpos string-search approximate