end(explode) 严格的标准:只有变量应该通过引用传递

end(explode) Strict Standards: Only variables should be passed by reference in

我有这个代码来获取文件的扩展名:

$extension = end(explode(".", $_FILES["rfile"]["name"]));

这在本地主机上工作正常,但是当我上传在线托管时,它给我这个错误:

Strict Standards: Only variables should be passed by reference in...

您的本地主机是旧 PHP 版本或未配置为显示严格的标准错误。

现在 PHP,你应该这样做:

$explode = explode(".", $_FILES["rfile"]["name"]);
$extension = end($explode);

参见文档中的示例:http://php.net/manual/en/function.end.php#refsect1-function.end-examples

PHP end 将对变量的引用作为参数。 http://php.net/manual/en/function.end.php

因此,在启用严格标准的情况下,您应该先将 explode 的结果放入变量中:

$exp = explode(".", $_FILES["rfile"]["name"])
$extension = end($exp);

为什么不用pathinfoPHP >= 4.0.3),即:

$ext = pathinfo($_FILES["rfile"]["name"])['extension'];

现场PHP演示

http://ideone.com/eMpbnL