2012-12-04 54 views
1

這是從文件夾中抓住所有文件的腳本的一部分的話拇指任何情況下,過濾掉圖像文件,然後將其顯示。我想刪除在$名稱變量包含單詞「拇指」它開始通過延長過濾之前的任何情況。試圖篩選出含有可變

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

你有沒有考慮過['fnmatch'函數](http://php.net/manual/en/function.fnmatch.php)? – Passerby

回答

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++;} 
    } 
    } 
} 
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); 

另外,代替substr($names[$i], -4),我已經選擇了使用PATHINFO。這樣,擴展可以是任何lenght的,而且將永遠是正確返回。