由于PHP是一种动态语言,检查提供的字段是否为空的最佳方法是什么?
我想确保:
null被视为空字符串
仅限空白字符串被视为空
"0"不算空
这是我到目前为止所得到的:
$question = trim($_POST['question']); if ("" === "$question") { // Handle error here }
必须有一种更简单的方法吗?
// Function for basic field validation (present and neither empty nor only white space function IsNullOrEmptyString($str){ return (!isset($str) || trim($str) === ''); }
老帖子,但有人可能需要它,因为我做;)
if (strlen($str) == 0){ do what ever }
替换$str
你的变量.
NULL
并且""
在使用时都返回0 strlen
.
使用PHP的empty()函数.以下事项被认为是空的
"" (an empty string) 0 (0 as an integer) 0.0 (0 as a float) "0" (0 as a string) NULL FALSE array() (an empty array) $var; (a variable declared, but without a value)
有关详细信息,请检查空功能
如果我错了,我会谦卑地接受,但我在自己的测试结果中发现以下内容适用于测试字符串(0)""和NULL值变量:
if ( $question ) { // Handle success here }
这也可以反过来测试成功如下:
if ( !$question ) { // Handle error here }
注意trim()
函数的假阴性- 它在修剪之前执行一个转换为字符串,因此如果你传递一个空数组,它将返回例如"Array".这可能不是问题,取决于您处理数据的方式,但是使用您提供的代码,question[]
可以在POST数据中提供名为的字段,并且该字段看起来是非空字符串.相反,我会建议:
$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