既然PHP是一种动态语言,那么检查所提供字段是否为空的最佳方法是什么?
我要确保:
Null被认为是空字符串 只有空格的字符串被认为是空的 那个“0”不是空的
这是我目前得到的:
$question = trim($_POST['question']);
if ("" === "$question") {
// Handle error here
}
一定有更简单的方法吧?
既然PHP是一种动态语言,那么检查所提供字段是否为空的最佳方法是什么?
我要确保:
Null被认为是空字符串 只有空格的字符串被认为是空的 那个“0”不是空的
这是我目前得到的:
$question = trim($_POST['question']);
if ("" === "$question") {
// Handle error here
}
一定有更简单的方法吧?
当前回答
旧帖子,但有人可能会像我一样需要它;)
if (strlen($str) == 0){
do what ever
}
用变量替换$str。 NULL和""在使用strlen时都返回0。
其他回答
旧帖子,但有人可能会像我一样需要它;)
if (strlen($str) == 0){
do what ever
}
用变量替换$str。 NULL和""在使用strlen时都返回0。
当您希望检查字段是否提供了值时,该字段可能是字符串、数组或未定义的。所以,以下内容就足够了
function isSet($param)
{
return (is_array($param) && count($param)) || trim($param) !== '';
}
用这个:
// check for null or empty
if (empty($var)) {
...
}
else {
...
}
这个检查数组和字符串:
function is_set($val) {
if(is_array($val)) return !empty($val);
return strlen(trim($val)) ? true : false;
}
小心来自trim()函数的错误否定——它在修剪之前执行强制转换为字符串,因此将返回例如。数组,如果你传递给它一个空数组。这可能不是问题,这取决于您如何处理数据,但是对于您提供的代码,可以在POST数据中提供一个名为question[]的字段,并且看起来是非空字符串。相反,我建议:
$question = $_POST['question'];
if (!is_string || ($question = trim($question))) {
// Handle error here
}
// If $question was a string, it will have been trimmed by this point