既然PHP是一种动态语言,那么检查所提供字段是否为空的最佳方法是什么?
我要确保:
Null被认为是空字符串 只有空格的字符串被认为是空的 那个“0”不是空的
这是我目前得到的:
$question = trim($_POST['question']);
if ("" === "$question") {
// Handle error here
}
一定有更简单的方法吧?
既然PHP是一种动态语言,那么检查所提供字段是否为空的最佳方法是什么?
我要确保:
Null被认为是空字符串 只有空格的字符串被认为是空的 那个“0”不是空的
这是我目前得到的:
$question = trim($_POST['question']);
if ("" === "$question") {
// Handle error here
}
一定有更简单的方法吧?
当前回答
这个检查数组和字符串:
function is_set($val) {
if(is_array($val)) return !empty($val);
return strlen(trim($val)) ? true : false;
}
其他回答
Empty()曾经为此工作,但Empty()的行为已经改变了几次。与往常一样,php文档始终是准确行为的最佳来源,这些页面上的注释通常提供了随时间变化的良好历史记录。如果你想检查对象属性的缺乏,目前一个非常防御性的方法是:
if (is_object($theObject) && (count(get_object_vars($theObject)) > 0)) {
// Function for basic field validation (present and neither empty nor only white space
function IsNullOrEmptyString($str){
return ($str === null || trim($str) === '');
}
为了更健壮(制表,返回…),我定义:
function is_not_empty_string($str) {
if (is_string($str) && trim($str, " \t\n\r\0") !== '')
return true;
else
return false;
}
// code to test
$values = array(false, true, null, 'abc', '23', 23, '23.5', 23.5, '', ' ', '0', 0);
foreach ($values as $value) {
var_export($value);
if (is_not_empty_string($value))
print(" is a none empty string!\n");
else
print(" is not a string or is an empty string\n");
}
来源:
https://www.php.net/manual/en/function.is-string.php https://www.php.net/manual/en/function.trim.php
这个检查数组和字符串:
function is_set($val) {
if(is_array($val)) return !empty($val);
return strlen(trim($val)) ? true : false;
}
如果我错了,我会谦虚地接受,但我在自己的一端进行了测试,发现下面的代码可以用于测试字符串(0)""和NULL值变量:
if ( $question ) {
// Handle success here
}
这也可以反过来测试是否成功:
if ( !$question ) {
// Handle error here
}