我正在尝试使用多个关键字进行搜索。出于测试目的,搜索字符串看起来像这样
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。
如何在不输入关键字的情况下检查用户是否点击了搜索按钮?
由于
答案 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'])) )