mysql - 如何在 SQL 数据库中搜索拼写错误的关键字
问题描述
%LIKE% 会给我遵循特定模式的结果,例如如果有 iPhone 8,然后如果我搜索“iPhone”,我得到的结果 iPhone 8 到目前为止非常好,但我想要的是如果用户搜索“iphone8” " 或 "iPhone 8" 在这种情况下,用户不会在这里得到任何东西是我试过的
function patternn($p)
{
$p="%".$p."%";
return $p;
}
function like_match($pattern, $subject)
{
$pattern = str_replace('%', '.*', preg_quote($pattern, '/'));
return (bool) preg_match("/^{$pattern}$/i", $subject);
}
function mystripos($pattern1,$subject1)
{
$resultstr=stripos($pattern1,$subject1);
$zeroo=0;
$yn="";
if($resultstr===$zeroo) {
$yn="yes";
} elseif($resultstr>=1){
$yn="yes";
}else{
$yn="no";
}
return $yn;
}
function mystrripos($pattern2,$subject2)
{
$resultstr1=strripos($pattern2,$subject2);
$zeroo1=0;
$yn1="";
if($resultstr1===$zeroo1) {
$yn1="yes";
} elseif($resultstr1>=1) {
$yn1="yes";
} else {
$yn1="no";
}
return $yn1;
}
function cutinhalf1($strc)
{
$length=strlen($strc);
$newlength=0;
if($length % 2==0) {
$newlength=$length/2;
}else{
$newlength=$length/2;
$newlength=$newlength+0.5;
}
$strc=substr($strc, 0, $newlength);
return $strc;
}
function cutinhalf2($strc2)
{
$length2=strlen($strc2);
$newlength2=0;
if($length2 % 2==0) {
$newlength2=$length2/2;
}else{
$newlength2=$length2/2;
$newlength2=$newlength2-0.5;
}
$strc2=substr($strc2, $newlength2);
return $strc2;
}
if ( like_match(patternn($name),$keywordd)==1 ||
like_match(patternn($brand),$keywordd)==1 ||
like_match(patternn($model),$keywordd)==1 ||
like_match(patternn($type),$keywordd)==1 ||
like_match(patternn($cpu),$keywordd)==1 ||
like_match(patternn($gpu),$keywordd)==1 ||
like_match(patternn($gpu_spec),$keywordd)==1 ||
like_match(patternn($refresh_rate),$keywordd)==1
) {
$sql="SELECT image1 FROM pc where id=$idd";
$result= mysqli_query($db, $sql);
while ($row = mysqli_fetch_array($result)) {
echo"<img src='images/" .$row["image1"]."'>";
} elseif (
mystripos($name,$keywordd)=="yes"||
mystripos($name,str_replace(' ', '', $keywordd))=="yes"||
mystripos($name,cutinhalf1($keywordd))=="yes"||
mystripos($name,cutinhalf2($keywordd))=="yes"||
mystrripos($name,$keywordd)=="yes"||
mystrripos($name,str_replace(' ', '', $keywordd))=="yes"||
mystrripos($name,cutinhalf1($keywordd))=="yes"||
mystrripos($name,cutinhalf2($keywordd))=="yes"||
mystripos($brand,$keywordd)=="yes"||
mystripos($brand,str_replace(' ', '', $keywordd))=="yes"||
mystripos($brand,cutinhalf1($keywordd))=="yes"||
mystripos($brand,cutinhalf2($keywordd))=="yes"||
mystrripos($brand,$keywordd)=="yes"||
mystrripos($brand,str_replace(' ', '', $keywordd))=="yes"||
mystrripos($brand,cutinhalf1($keywordd))=="yes"||
mystrripos($brand,cutinhalf2($keywordd))=="yes"||
mystripos($model,$keywordd)=="yes"||
mystripos($model,str_replace(' ', '', $keywordd))=="yes"||
mystripos($model,cutinhalf1($keywordd))=="yes"||
mystripos($model,cutinhalf2($keywordd))=="yes"||
mystrripos($model,$keywordd)=="yes"||
mystrripos($model,str_replace(' ', '', $keywordd))=="yes"||
mystrripos($model,cutinhalf1($keywordd))=="yes"||
mystrripos($model,cutinhalf2($keywordd))=="yes"||
mystripos($type,$keywordd)=="yes"||
mystripos($type,str_replace(' ', '', $keywordd))=="yes"||
mystripos($type,cutinhalf1($keywordd))=="yes"||
mystripos($type,cutinhalf2($keywordd))=="yes"||
mystrripos($type,$keywordd)=="yes"||
mystrripos($type,str_replace(' ', '', $keywordd))=="yes"||
mystrripos($type,cutinhalf1($keywordd))=="yes"||
mystrripos($type,cutinhalf2($keywordd))=="yes"||
mystripos($cpu,$keywordd)=="yes"||
mystripos($cpu,str_replace(' ', '', $keywordd))=="yes"||
mystripos($cpu,cutinhalf1($keywordd))=="yes"||
mystripos($cpu,cutinhalf2($keywordd))=="yes"||
mystrripos($cpu,$keywordd)=="yes"||
mystrripos($cpu,str_replace(' ', '', $keywordd))=="yes"||
mystrripos($cpu,cutinhalf1($keywordd))=="yes"||
mystrripos($cpu,cutinhalf2($keywordd))=="yes"||
mystripos($gpu,$keywordd)=="yes"||
mystripos($gpu,str_replace(' ', '', $keywordd))=="yes"||
mystripos($gpu,cutinhalf1($keywordd))=="yes"||
mystripos($gpu,cutinhalf2($keywordd))=="yes"||
mystrripos($gpu,$keywordd)=="yes"||
mystrripos($gpu,str_replace(' ', '', $keywordd))=="yes"||
mystrripos($gpu,cutinhalf1($keywordd))=="yes"||
mystrripos($gpu,cutinhalf2($keywordd))=="yes"||
mystripos($gpu_spec,$keywordd)=="yes"||
mystripos($gpu_spec,str_replace(' ', '', $keywordd))=="yes"||
mystripos($gpu_spec,cutinhalf1($keywordd))=="yes"||
mystripos($gpu_spec,cutinhalf2($keywordd))=="yes"||
mystrripos($gpu_spec,$keywordd)=="yes"||
mystrripos($gpu_spec,str_replace(' ', '', $keywordd))=="yes"||
mystrripos($gpu_spec,cutinhalf1($keywordd))=="yes"||
mystrripos($gpu_spec,cutinhalf2($keywordd))=="yes"||
mystripos($refresh_rate,$keywordd)=="yes"||
mystripos($refresh_rate,str_replace(' ', '', $keywordd))=="yes"||
mystripos($refresh_rate,cutinhalf1($keywordd))=="yes"||
mystripos($refresh_rate,cutinhalf2($keywordd))=="yes"||
mystrripos($refresh_rate,$keywordd)=="yes"||
mystrripos($refresh_rate,str_replace(' ', '', $keywordd))=="yes"||
mystrripos($refresh_rate,cutinhalf1($keywordd))=="yes"||
mystrripos($refresh_rate,cutinhalf2($keywordd))=="yes"
) {
$sql="SELECT image1 FROM pc where id=$idd";
$result= mysqli_query($db, $sql);
while ($row = mysqli_fetch_array($result))
{
echo"<img src='images/" .$row["image1"]."'>";
}
}
}
解决方案
推荐阅读
- mysql - 从 sequelize 中的插入获取自动生成的(通过触发器)字段
- css - 可以选择第 2 列并为第 2 列的奇数行添加背景颜色吗?
- java - 我的 SWT 标签没有通过在组合框中选择新项目来更改文本?
- python - NameError:未定义名称“消息”。Discord 机器人(不重写)
- angular - Angular Firebase 用户电子邮件验证到另一封电子邮件
- c++ - 如果基类具有在成员函数中修改的私有数据成员,派生类如何使用该函数?
- java - Integer.Parse 在 excel 获取的字符串上抛出 NumberFormatException
- php - 从 PHP5 更改 PHP7
- java - 修补 java.base 会导致 java.lang.LinkageError
- javascript - 使用用户在脚本中选择的文件的结果