<?php
$imgdir = 'img/';
$allowed_types = array('png','jpg','jpeg','gif'); //Allowed types of files
$dimg = opendir($imgdir);//Open directory
while($imgfile = readdir($dimg))
{
//please explain this part!!
if( in_array(strtolower(substr($imgfile,-3)),$allowed_types) OR
in_array(strtolower(substr($imgfile,-4)),$allowed_types) )
{$a_img[] = $imgfile;}
}
$totimg = count($a_img);
for($x=0; $x < $totimg; $x++){echo "<li><img src='" . $imgdir . $a_img[$x] . "'/></li>"
;}?>
我明白,这就像babysteps,但我的问题是:我阅读了php手册,但我真的不明白为什么substr部分就是这样!请帮忙!谢谢!
答案 0 :(得分:2)
检查文件名的最后3个字符,然后检查文件名的最后4个字符,以获取扩展名,并查看它是否在允许类型数组中。
然而,使用pathinfo()
可能会更好。 http://php.net/manual/en/function.pathinfo.php
$path_parts = pathinfo($imgfile);
if( in_array(strtolower($path_parts['extension']),$allowed_types) ) {
$a_img[] = $imgfile;
}
答案 1 :(得分:0)
substr($imgfile,-3)
;等于substr($imgfile, strlen($imgfile)-4);
这意味着您只收到字符串的最后3个字符。 在这种情况下,作者首先检查最后3个字符,然后检查最后4个字符,以查看它是否是允许的扩展名。
有关详细信息,请再次检查文档:string substr ( string $string , int $start [, int $length ] )
答案 2 :(得分:0)
让我用婴儿语言向你解释:D
substr有两个参数,一个字符串和一个数字。字符串是文本名称等文本或字符,数字是您想要的字符数。
如果数字是正数,那么它将从左侧获取字符,如果数字是负数,那么它将从右侧获取。在您的代码中:
substr($imgfile,-3) // takes three characters from left
表示,取图像文件名的最后三个字符,即文件的扩展名,
substr($imgfile,-4) // takes four characters from right side
表示最后四个字符。
在允许的类型数组中:
$allowed_types = array('png','jpg','jpeg','gif');
您有三个字符扩展名和一个四个字符扩展名,因此这两个substr用于这些目的。
我希望我用简单的话语为你解释。
谢谢