PHP使用file_get_contents如何判断文件不存在或内容为空
方案选型结论
优先使用第二种判断写法,是三种写法中最严谨无歧义的方案:
if ($file === false || strlen($file) === 0) { // 获取失败或内容为空时执行逻辑 }
各写法的优劣对比
- 第一种写法
if ($file == false)
存在严重的误判风险:PHP的弱类型等于判断会将字符串"0"、数字0等合法非空内容也判定为等同于false,如果你需要下载的文件可能存在内容仅为"0"的场景(比如纯文本配置文件、极小的二进制资源),会把正常文件误判为无效。 - 第三种写法
if ($file === false || empty($file))
存在和第一种写法相同的误判问题:empty()对字符串"0"的返回值为true,只有当你100%确认所有合法下载的文件内容都不可能等于"0"时,才可以临时使用该写法。 - 第二种写法
if ($file === false || strlen($file) === 0)
完全匹配你的需求:=== false可以精准捕获file_get_contents请求层面的失败(网络异常、权限不足、DNS解析失败等场景),strlen($file) === 0可以精准匹配返回内容为空的场景(包括你遇到的源站返回200但内容为空的异常),不会对任何合法非空文件产生误判。
内容的提问来源于stack exchange,提问作者user16361980
相关产品推荐
相关产品推荐

