我一直为此苦苦挣扎。我有一个快速搜索框,用户可以输入一个名称,并在下拉框中显示匹配的名称。我试图使搜索忽略撇号,但是我没有运气。
$keyword = '%'.$_POST['keyword'].'%';
$sql="SELECT Name, PedigreeId, DATE_FORMAT (DOB,'%Y') as DOB from pedigree WHERE Name LIKE \"$keyword\" ORDER BY Name ASC, DOB ASC LIMIT 0, 100";
我认为类似的方法可能有效,但不确定如何在代码中实现它:
$keyword = preg_replace("/[^A-Za-z0-9' ]/", " ", $keyword);
$keyword = preg_replace("/\s+/", " ", $keyword);
$keyword = strtolower(trim($keyword));
有人可以帮我吗? 预先感谢!
更新:我发现我可以做到这一点,如果您输入的名字像Julies(所有匹配项,例如Julie's&Julies)都可以输入,那么效果很好。但是,如果您键入Julie's,则一旦键入',它就不会显示任何结果。
$sql="SELECT Name, PedigreeId, DATE_FORMAT (DOB,'%Y') as DOB from pedigree WHERE replace(replace(replace(`Name`, '\'', ''), ',', ''), '-', '') LIKE \"$keyword\" ORDER BY Name ASC, DOB ASC LIMIT 0, 100";
有什么建议吗?我很茫然。
可以用%通配符将'和-替换为通票吗?