Mysql 如何搜索忽略单词之间的空格?

Mysql 如何搜索忽略单词之间的空格?,mysql,json,search,autocomplete,Mysql,Json,Search,Autocomplete,我希望使用我的搜索模块搜索名称,忽略空格 如果我想搜索像B Zillva这样的名字 我想在下拉列表中显示结果,即使我像AB Zilva一样键入名称 当前没有空格的搜索不起作用 $db = JFactory::getDbo(); $searchp=$_GET["term"]; $searchp = str_replace(' ','%%', trim($searchp)); //$searchp= preg_split('/ /', $searchp); $query = $db ->

我希望使用我的搜索模块搜索名称,忽略空格

如果我想搜索像B Zillva这样的名字

我想在下拉列表中显示结果,即使我像AB Zilva一样键入名称

当前没有空格的搜索不起作用

   $db = JFactory::getDbo();
$searchp=$_GET["term"];
$searchp = str_replace(' ','%%', trim($searchp));
//$searchp= preg_split('/ /', $searchp);
$query = $db -> getQuery(true);

 $query="SELECT * FROM content where title like '%".$searchp."%'AND categories_id=82 order by title ASC ";
$db -> setQuery($query);
// Load the results as a list of associated arrays.
$results = $db -> loadAssocList();
$json=array();
foreach ($results as $json_result) {
    $json[] = array('value' => $json_result["title"], 'label' => $json_result["title"]);
}
请给我一些建议

更新:


代码的问题在于,当您将空格替换为%%时,会得到如下搜索结果:

WHERE title like '%AB%%Zilva%'
但当标题是B Zillva时,这将不匹配。您需要从数据库中的搜索字符串和列中删除空格。这样做:

$searchp = str_replace(' ', '', $searchp);
然后将SQL更改为:

WHERE REPLACE(title, ' ', '') LIKE '%$searchp%'
对于Javascript突出显示,我认为您需要这样做:

var term = this.element.val().replace(/ /g, '').replace(/.(?=.)/g, '$& *'),

这将创建一个正则表达式,允许在搜索字符串中的任何字符之间留有空格。

谢谢@Barmar,它可以工作,你能检查我问题的底部吗,我在那里放了一个jquery代码。我用它来突出显示单词的类型。但是在我像你说的那样做了改变之后,现在那个高亮度的部分不起作用了。代码是否也会影响到该代码。请指教
var term = this.element.val().replace(/ /g, '').replace(/.(?=.)/g, '$& *'),