2009-07-26 2 views
0
$dir_handle = @opendir($url) or die("Unable to open $url"); 
    $count = "0"; 
    while ($file = readdir($dir_handle)) { 
     if (!is_dir($url.'/'.$file) && ($file="*.jpg" || $file="*.gif" || $file="*.png") && $file!="picture0.*") { 
     $galleryEventFile[$count] = $file; 
     $count++; 
     } 
    } 
    closedir($dir_handle); 

Я думаю, что это что-то делать с этой линией:

if (!is_dir($url.'/'.$file) && ($file="*.jpg" || $file="*.gif" || $file="*.png") && $file!="picture0.*") 

, но я не уверен,

ответ

6

Я вижу две вещи, которые будут причинять вам проблемы:

Назначение/сравнения:

у вас есть код:

if ($file="*.jpg" //etc... 

Однако один знак равенства будет выполнять задание, а не сравнение - для этого вам нужно использовать два знака равенства (==). См. http://php.net/manual/en/language.operators.comparison.php. По существу, что вы делаете, выполнив задание в если утверждение является:

$file = '*.jpg'; 
if ($file) { } 

Wildcard соответствия строк

Вы также не можете сделать подстановочные соответствия, как этот ($ файл == «*. JPG) на строку, вы можете посмотреть на использование preg_match() и регулярные выражения вместо, например,

if (!preg_match('/\.jpg$/i', $file)) { 
    //not .jpg 
} 

Было бы лучше, чтобы сделать что-то подобное, хотя:

//get file extension 
$extension = pathinfo($file, PATHINFO_EXTENSION); 

$allowedExtensions = array('jpg', 'png', 'gif'); 

//check in allowed list 
if (!in_array(strtolower($extension), $allowedExtensions)) { 
    //not valid 
} 
+0

Почему это $ pathinfo, а не $ extension? – imHavoc

+0

потому что я идиот. спасибо, скорректировали –

0

Во-первых, $ Количество должно быть числом. Do:

$count = 0; 

Во-вторых, AFAIK, PHP не поддерживает подобный подстановочный знак. Вы не можете использовать "*" для соответствия. Вам нужно будет использовать регулярные выражения для соответствия в условном выражении.

+0

Это не должно быть проблемой. Я просто попробовал '$ count =" 0 "; $ Подсчитывать ++; echo $ count; 'and it echo'ed 1. – jimyi

+0

Почему 1 в отличие от 0? Не имеет никакого смысла. – hobodave

+0

Это правда. Это было более стилистично, чем что-либо. Неявное преобразование типов беспокоит меня. Реальная проблема, на мой взгляд, - это сопоставление подстановочных знаков с «*» – thedz

0

Сделайте то же, что и thedz и Tom Haigh.

Ты слышал о XDebug? Это позволит вам настроить среду, используя Eclipse, и выполнить свой PHP-код. Я не разрабатываю без использования комбинации Eclipse и XDebug.

0

Первое, что вы хотите сделать, это отладить строку if. Помните, что если вы поместили *.gif, он увидит, что файл на самом деле назван "*.gif", вместо поиска «любого» gif-файла, аналогичного тому, что делает Windows.

Я предлагаю пройти через каждый сегмент if и получить его. то вы можете начать собирать его вместе.

Смежные вопросы