【问题标题】:Php search engine not working?php搜索引擎不工作?
【发布时间】:2014-07-30 05:53:24
【问题描述】:

我正在开发一个可以为您提供信息的简单搜索引擎,但我遇到了问题。您会看到,当我在搜索输入中添加空格时,它不会给您显示“未搜索关键字,请重试”的消息,但是当您单击搜索按钮而不在搜索输入中添加任何内容时,它会起作用。我该如何解决这个问题以使其同时适用于两者?

代码:

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

【问题讨论】:

  • "sorry we are having some problbems"

标签: php mysql search mysqli


【解决方案1】:

使用trim() 删除前导和尾随空格。

$searchTerm = trim($searchTerm);

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

【讨论】:

    【解决方案2】:

    除了空的搜索词外,还要检查空格。这里我使用正则表达式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...
    

    【讨论】:

    • 你不是说^\s*$吗?
    • 是的。谢谢。这是艰难的一天。
    • 你仍然需要*,否则你只检查一个空格,而不是所有空格。
    【解决方案3】:

    试试这个查询而不是使用 sprintf

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

    【讨论】:

    • 如何解决搜索字符串只包含空格的问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多