PHP 5.5と以前のバージョンのempty関数の違い


私が一番好きな関数の一つとして、今日もついにこの関数の悪魔のところを発見しました。以下のコードを書きました。ローカルテストはすべてokです。サーバーに行くとSBになります。

if(strlen($passwd) < 6 || empty($preg_replace("/\d/", "", $passwd))) {
    //do something
}
大体の意味は、パスワードが6桁より大きいと数字だけで構成できないということです。サーバログを探してみたら、次のようなエラーがありました。

PHP Fatal error: Can't use function return value in write context in /xxx/xxx/xx.php on line xxx
Googleでは、emptyのパラメータは関数ではないということです。私は頼っています。地元は明らかにいいです。地元のPHPは5.5で、サーバーは5.3です。この関数は2つのバージョンの間で進化しましたか?PHPの公式文書を探しましたが、手がかりが見つかりませんでした。そして、googleが検索しました。PHPの英語文書のインターフェイスを見つけました。empty関数の紹介の下で、小文字が見つかりました。

Note:
Prior to PHP 5.5, empty() only supports variables; anything else will result in a parse error. In other words, the following will not work: empty(trim($name)). Instead, use trim($name) == false.
です。
悪魔よ、このような中国語ユーザーを連れて来ません。empty関数の使用シーンをまとめます。
1.PHP 5.5以前のバージョンでは、この関数は変数の割当値が0、false、空の文字列、nullかを確認するために使用されます。任意の変数形式のパラメータはこの関数のエラーを引き起こす。2.PHP 5.5この関数は変数に限定されず、どの値にも適用できます。定数、関数の戻り値などがあります。