簡體   English   中英

PHP搜索引擎無法正常工作?

[英]Php search engine not working?

我正在使用一個簡單的搜索引擎來獲取您的信息,但是我遇到了問題。 您會看到,當我在搜索輸入中添加空格時,並沒有顯示“沒有搜索到關鍵詞,請重試”的消息,但是當您單擊搜索按鈕而未在搜索輸入中添加任何內容時,它會起作用。 我該如何解決這個問題以使其與兩者同時使用?

碼:

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);
?>

使用trim()刪除前導和尾隨空格。

$searchTerm = trim($searchTerm);

if ($searchTerm == '') {
    echo("no key words searched please try again");
} else {
    ...
}

除空白搜索詞外,還要檢查空格。 在這里,我使用正則表達式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...

試試這個查詢,而不是使用sprintf

    "SELECT * FROM searchengine WHERE name LIKE '%$searchsting%' LIMIT 0,20"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM