0

我正在尝试使用 PHP 改进搜索结果。例如,当产品名称为ZSX-3185BC用户时,用户在放置类似的内容时找不到产品ZSX3185BC。到目前为止,我得到了类似的东西:

$input = '01.10-2010';  
$to_replace = array('.','-');
$clean = str_replace($to_replace, '/',$input);`

我试过这个,但它不能正常工作(不确定,在没有详细说明的情况下发布在评论中)

$str = ""; 
$len = strlen($strSearch) - 1; 
// Loop through the search string to check each charecter is acceptable and strip those that are not 
for ($i = 0; $i <= $len; $i++) {
    if(preg_match("/\w|-| /",$strSearch[$i])) {
        $str = $str . $strSearch[$i]; 
    }
}
4

2 回答 2

0

您应该尝试直接在数据库查询中进行这种模糊匹配。模糊字符串匹配的一种常用方法是Levenshtein 距离

MySQL 没有内置此功能,但是可以添加。请参阅这个 SO 问题。

基本的方法是在 MySQL 中添加一个存储函数。有一个Levenshtein 实现作为存储函数。

于 2012-06-27T10:35:22.967 回答
-1

尝试这个 :

SELECT * FROM tablename WHERE replace(fieldname, '-', '') like '%ZSX3185BC%';
于 2012-06-27T10:21:48.837 回答