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的字符串值。