On Sat, Apr 5, 2025, at 14:15, Kayck Matias wrote:
INTRODUCTION
This RFC proposes the addition of a new global function blank()
to PHP’s core, intended to provide a more intuitive and context-sensitive way of checking for “blank” values. This function is not a replacement for empty()
, but a complementary tool to help developers more accurately evaluate user input, query parameters, and form values — particularly in situations where empty()
may behave in unintuitive ways.
MOTIVATION
The motivation for this RFC arose from a real-world issue I encountered at work involving query string filtering — specifically when using the string "0"
as a filter value. Because empty("0")
evaluates to true
, the logic skipped this valid input, causing incorrect behavior in the application. This highlighted a gap in PHP’s current toolset for handling “blank” values in a more semantic and intention-aligned way.
I would personally advocate that empty() NEVER be used on strings. There are too many edge cases. As I said in an earlier message on the thread, if you want to know if a string is empty, just do $string == “” – note the double equals, not triple equals. This matches null, an actual empty string, and false, but won’t match anything else.
PROPOSAL
The proposed blank()
function will behave similarly to empty()
, but with semantics better suited for filtering, validation, and user input. Its primary goals are:
-
To treat whitespace-only strings as blank (e.g., " "
).
-
To treat "0"
(string zero) and 0
(int zero) as not blank, unlike empty()
.
-
To support clearer, intention-driven logic when working with dynamic input, especially in query strings and HTTP forms.
Function Signature
function blank(mixed $value): bool;
Logic (PHP version)
function blank(mixed $value): bool
{
if (
false === $value ||
(empty($value) && '0' != $value) ||
(\is_string($value) && '' === \trim($value))
) {
return true;
}
return false;
}
Examples
echo blank(null); // true
echo blank(false); // true
echo blank(“”); // true
echo blank(" "); // true
echo blank(); // true
echo blank(0); // false
echo blank(“0”); // false
echo blank(“test”); // false
echo blank([0]); // false
I agree with most of these. I do not agree that " " (a space) is blank though. For people without last names, this is often their last name to pass validation on forms. As I said earlier, a simple loose check with an empty string is usually all you need, not empty().
Best Regards,
Kayck Matias 
— Rob