Neden $ güncelleme değil sayımı mi?

4 Cevap php
   $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);

Ben bu hattı ile ilgisi olduğunu düşünüyorum:

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

ama emin im

4 Cevap

Sana sorunlara neden olacak iki şey görebilirsiniz:

Assignment/comparison:

Eğer kodu vardır:

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

Ancak, tek eşittir işareti bir atama değil, bir karşılaştırma yapacak - iki Bu işaretlerini (==) eşittir kullanmanız gerekir. Bkz http://php.net/manual/en/language.operators.comparison.php. Esasen ne deyim ise bir bir atama yaparak yapıyoruz:

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

Wildcard matching of strings

Ayrıca bir dize gibi joker eşleme ($ dosya == "*. Jpg) yapamaz, sen (preg_match kullanarak bakmak) ve düzenli ifadeler olabilir yerine, örneğin

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

Ama böyle bir şey yapmak daha iyi olabilir:

//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
}

İlk olarak, $ sayısı bir sayı olmalıdır. Yapın:

 $count = 0;

İkincisi, AFAIK, PHP gibi eşleşen joker desteklemiyor. Kullanmak "*" maç olamaz. Siz koşullu eşleştirmek için düzenli ifadeler kullanmak gerekir.

Thedz ve Tom Haigh önerilen gibi yapın.

Ayrıca XDebug duydun mu? Bu bir ortam Eclipse kullanarak söylemek kurulum için izin ve PHP kodu ile adım olacaktır. Ben bir arada Eclipse ve XDebug kullanmadan geliştirmek yok.

Yapmak istediğiniz ilk şey, eğer hattını hata ayıklamak için. Eğer *.gif koyarsanız, o dosya aslında oldukça, Windows ne benzer 'herhangi bir' gif dosyası, arayan daha, "*.gif" adında olduğunu görmek isteyen unutmayın.

Ne öneririm IF her segmentte geçiyor ve onu geçmek için olsun. o zaman birlikte koyarak başlayabilirsiniz.