如何验证空搜索字符串

时间:2014-02-22 22:28:49

标签: php search

我正在尝试使用多个关键字进行搜索。出于测试目的,搜索字符串看起来像这样

http://localhost/admin/search.php?search=live+concert

到目前为止,搜索效果非常好!!!

如果没有参数,我就能回复消息

if (isset($_GET['search'])) {

   // split keywords
   $keywords = preg_split('/[\s]+/', $_GET['search']);

   // search

} else {
   echo 'Nothing to search';
}

这是我的问题。当我点击搜索按钮而没有输入关键字时,我得到一个空字符串,就像这个

http://localhost/admin/search.php?search=

我想向用户回应错误,说没有要搜索的关键字。我尝试过使用 count($ keywords),但在没有输入任何关键字的情况下,我总是得到1。

如何在不输入关键字的情况下检查用户是否点击了搜索按钮?

由于

6 个答案:

答案 0 :(得分:4)

您可以使用trim($_GET['search'])删除任何其他空格并检查$_GET['search']是否''这样,即使用户只提交空格,您的错误消息也会显示

if (isset($_GET['search']) && trim($_GET['search']) != '') {

答案 1 :(得分:3)

你可能会尝试这样的事情:

if (empty($_GET['search'])) {
    echo 'You did not enter anything';
}

empty检查var是0还是空,或者根本不设置。这并不重要,但从PHP 5.5开始,empty()支持表达式,而不仅仅是变量。

答案 2 :(得分:2)

您可以使用如下的简单验证,这将检查是否发布了“搜索”并且它是非NULL还是没有空格和长度大于0

if (isset($_GET['search']) && strlen(trim($_GET['search']))>0) {
 // do the search
}else{
 echo 'Nothing to search';
}

答案 3 :(得分:2)

如果用户点击了搜索按钮,则会设置$ _GET ['search']但为空,这就是您的'isset'条件失败的原因。为什么不简单:

if (!trim($_GET['search'])){ //trim removes whitespace from beginning and end

答案 4 :(得分:1)

您可以使用if ($_GET['search'] == '') {/*ERROR*/}if (strlen($_GET['search']) < 1) {/*ERROR*/}

这些也可以添加到您现有的if语句中。

使用count的问题是当您将空字符串作为preg_split()的第二个参数时,将返回一个包含一个空字符串值的数组:array('')。因此,数组中的值将为1。

答案 5 :(得分:1)

empty功能应该有用 -

if ( isset($_GET['search']) && !empty(trim($_GET['search'])) )