我有一个PHP搜索脚本,它根据MySQL数据库中分配的标记获取结果。我想从查询字符串中屏蔽某些内容。例如或,或一个
我该怎么做我希望人们能理解我的问题。
我当前的代码是:
if(!empty($_GET['q'])){
$keywords=explode(' ',$_GET['q']);
foreach($keywords as $query){
$query=mysql_real_escape_string($query);
$likes[]="keywords LIKE '%{$query}%'";
}
$searchResult=mysql_query("select * from questions where ".implode('or ',$likes)."limit 1");
while($row=mysql_fetch_assoc($searchResult)){
$results="<div class='webresult'>{$row['result']}</div>";
}
}
所以我认为-你试图以错误的方式解决另一个问题。
如果您不想查找短单词,请执行以下操作:
if(!empty($_GET['q'])){
$keywords=explode(' ',$_GET['q']);
foreach($keywords as $query){
if (strlen($query) < 3) {
$query=mysql_real_escape_string($query);
$likes[]="keywords LIKE '%{$query}%'";
}
}
}
您可以用替换所有不需要的字符
$query = str_replace("!", "", $query);
$query = str_replace(",", "", $query);
$query = str_replace(".", "", $query);
以及您想要阻止的所有字符
如果要去掉某些单词或字符,最简单的方法是存储这些单词或字符的数组,并在分解之前在字符串上使用str_replace。
$exclude = array("!","a","foo");
$clean = str_replace($exclude,"",$_GET['q']);
然后,您可以使用干净的字符串继续使用当前代码:
$keywords=explode(' ',$clean);