我正在开发一个简单的搜索引擎,可以为您提供信息,但我遇到了问题。你看,当我在搜索输入中放入一个空格时,它没有给你一条消息说"没有搜索关键词请再试一次"但是当您单击搜索按钮而不在搜索输入中添加任何内容时,它会起作用。我怎么能解决这个问题,使它适用于两者?
代码:
if(!$db) {
die('sorry we are having some problbems');
}
$searchTerm = mysqli_real_escape_string($db,$_GET['term']);
if ( empty($searchTerm))
{
echo("no key words searched please try again");
}
else
{
$sql = mysqli_query(
$db,
sprintf(
"SELECT * FROM searchengine WHERE name LIKE '%s' LIMIT 0,20",
'%'. $searchTerm .'%'
)
);
while($ser = mysqli_fetch_array($sql)) {
echo "<a href='$ser[pageurl]'>$ser[img]</a>";
}
}
mysqli_close($db);
?>
答案 0 :(得分:3)
使用trim()
删除前导和尾随空格。
$searchTerm = trim($searchTerm);
if ($searchTerm == '') {
echo("no key words searched please try again");
} else {
...
}
答案 1 :(得分:0)
检查除空搜索词之外的空格。在这里,我使用正则表达式preg_match来查找可以输入的任何空格字符。
if (empty($searchTerm)||preg_match('!^\s+$!',$searchTerm))
{
echo("no key words searched please try again");
}
else...
或仅使用preg_match
if (preg_match('!^\s*$!',$searchTerm))
{
echo("no key words searched please try again");
}
else...
您可以使用的另一种方法是使用strlen
检查字符串长度if (strlen($searchTerm)<4)
{
echo("no key words searched please try again");
}
else...
答案 2 :(得分:-1)
尝试此查询而不是使用sprintf
"SELECT * FROM searchengine WHERE name LIKE '%$searchsting%' LIMIT 0,20"