组合empty()和trim()会杀死Apache服务器

时间:2013-07-23 12:00:33

标签: php apache

我想修剪一个字符串然后检查所述字符串是否为空,如下所示:

if(!empty(trim($string))) { ... }

但由于某些未知原因,这恰好使我的本地Apache崩溃。我得到的唯一错误消息表明Apache停止工作。我的Apache版本是

  

Apache / 2.4.2(Win32)OpenSSL / 1.0.1c PHP / 5.4.4

以下代码执行得非常完美:

 $string = trim($string);
 if(!empty($string)) { ... }

所以,我的代码运行得很好。我仍然想知道:为什么Apache会因此而崩溃?在我看来,两个代码片段都是一样的。或者我错过了什么?

谢谢!

2 个答案:

答案 0 :(得分:5)

除非您已经运行PHP 5.5:

  

在PHP 5.5之前,empty()仅支持变量;其他任何东西都会导致解析错误。换句话说,以下将不起作用:empty(trim($ name))。相反,使用trim($ name)== false。

(引自PHP docs

答案 1 :(得分:0)

运行此类代码时绝对没有意义

根本不需要它。 trim()始终返回一个值 - 因此,不会使用任何特殊的empty()功能。

if(trim($string)) { ... }
// or, better yet
if($string = trim($string)) { ... }

绰绰有余。