0

PHPを使用して検索結果を改善しようとしています。たとえば、製品名がZSX-3185BCのようなものを入力すると、ユーザーは製品を見つけることができませんZSX3185BC。これまでのところ、次のようなものがあります:

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

私はこれを試しましたが、正しく動作しません(よくわかりません、詳細なしでコメントに投稿されました-ed)

$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

この種のあいまい一致は、データベース クエリで直接実行するようにしてください。あいまい文字列一致の一般的なアプローチは、レーベンシュタイン距離です。

MySQL にはこれが組み込まれていませんが、追加することができます。このSOの質問を参照してください。

基本的な方法は、ストアド関数を MySQL に追加することです。ストアド関数としてレーベンシュタイン実装があります。

于 2012-06-27T10:35:22.967 に答える
-1

これを試して :

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