Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何验证空搜索字符串_Php_Search - Fatal编程技术网

Php 如何验证空搜索字符串

Php 如何验证空搜索字符串,php,search,Php,Search,我正在尝试使用多个关键字进行搜索。出于测试目的,搜索字符串如下所示 http://localhost/admin/search.php?search=live+concert http://localhost/admin/search.php?search= 到目前为止,搜索工作完美 如果没有参数,我可以回显消息 if (isset($_GET['search'])) { // split keywords $keywords = preg_split('/[\s]+/', $

我正在尝试使用多个关键字进行搜索。出于测试目的,搜索字符串如下所示

http://localhost/admin/search.php?search=live+concert
http://localhost/admin/search.php?search=
到目前为止,搜索工作完美

如果没有参数,我可以回显消息

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

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

   // search

} else {
   echo 'Nothing to search';
}
这是我的问题。当我点击搜索按钮而不输入关键字时,我得到一个空字符串,如下所示

http://localhost/admin/search.php?search=live+concert
http://localhost/admin/search.php?search=
我想向用户回显一个错误,表示没有要搜索的关键字。我尝试过使用count$关键字,但当没有输入关键字时,结果总是得到1

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

谢谢

如果$\u GET['search']={/*ERROR*/}或如果strlen$\u GET['search']<1{/*ERROR*/},您可以使用

这些也可以添加到已经存在的if语句中

使用count的问题在于,当您将空字符串作为preg_split的第二个参数时,将返回一个具有一个空字符串值的数组:array。因此,数组中的值量将为1。

您可以使用trim$\u GET['search'],删除任何附加空格,并检查$\u GET['search']是否不是这种方式,即使用户仅提交空格,错误消息也会显示

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

您可以使用如下所示的简单验证,这将检查搜索是否已发布且其不为NULL,或者while空格和长度是否大于0

if (isset($_GET['search']) && strlen(trim($_GET['search']))>0) {
 // do the search
}else{
 echo 'Nothing to search';
}
该职能应在以下方面发挥作用:

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

您可以尝试以下方法:

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

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

如果用户单击了搜索按钮,$\u GET['search']将被设置为空,但为空,这就是为什么“isset”条件失败的原因。为什么不简单一点:

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

你试过php的空方法吗?它与isset不同。preg_split后的$keywords将是一个数组,因此不幸的是,您的两个解决方案都不起作用……我的错误。我已经修好了。空的完全没有必要。变量将在表单过帐时设置。一个简单的$_GET['search']就足够了。isset完全没有必要。变量将在表单过帐时设置。一个简单的$_获取['search']甚至!trim$\u GET['search']就足够了。@JBES如果不先使用isset,可能会收到一条警告,提示trim正在使用一个未设置的变量,因此最好先使用isset,然后再运行trim,因此如果我通过直接链接访问页面,则不会设置没有查询字符串的$\u GET。您完全没有抓住要点。变量将在表单过帐时设置。我的答案是正确的。另外,!=也没有必要,因为所需要的只是一个引导!逻辑非运算符-@JBES如果我这样访问页面:浏览器中是否直接设置了$\u GET['search']集?@JBES只是为了获取信息,他如何使用GET方法测试表单?在您看来,他如何测试表单是否已提交?问题2如果他使用get,他可能希望人们在不提交表单的情况下共享提供结果的URL,那么您的解决方案是什么?strlentrim$\u get['search']>0将比trim$\u get['search']少得多。是唯一长度为0的字符串值。