这是一个脚本的一部分,它抓取文件夹中的所有文件,过滤掉图像文件,然后显示它们。我想删除$ names变量中包含单词“thumb”的任何实例,然后才开始按扩展名过滤。
sort($names);
$tempvar=0;
for ($i=0;$names[$i];$i++){
$ext=strtolower(substr($names[$i],-4));
if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png"){$names1[$tempvar]=$names[$i];$tempvar++;}
}
答案 0 :(得分:0)
$tempvar=0;
for ($i=0;$names[$i];$i++){
if(strpos($names[$i], 'thumb') === false){
$ext=strtolower(substr($names[$i],-4));
if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png"){
$names1[$tempvar]=$names[$i];$tempvar++;}
}
}
}
答案 1 :(得分:0)
似乎你有一个for循环,你可以用一个(更简单的)foreach代替。你没有使用简单的array_filter的任何原因?这将使代码更容易阅读(无论如何):
<?php
$names = array(
'foo.thumb.jpg',
'bar.jpg',
'bar.THUMB.jpg',
'qux.png',
'README.TXT'
);
$extensions = array( 'jpg', 'gif', 'jpeg', 'png' );
$filtered = array_filter( $names, function( $name ) use ( $extensions ) {
if( stripos( $name, 'thumb' ) !== false ) {
return false;
}
return in_array( pathinfo( $name, PATHINFO_EXTENSION ), $extensions );
});
var_dump( $filtered );
另外,我选择使用pathinfo而不是substr($names[$i], -4 )
。这样,扩展名可以是任何长度,并且将始终正确返回。