0

配列にディレクトリリストを提供するには、次のものを用意してください

for($index=0; $index < $indexCount; $index++) {
        if (substr("$dirArray[$index]", 0, 1) != ".") { // don't list hidden files
 echo "<option value=\"".$dirArray[$index]."\">".$dirArray[$index]."</option>";
 }

.JPG と .PNG のみが表示されるように上記のコードを変更する方法はありますか?

ありがとう!

CP

4

3 に答える 3

2
foreach($dirArray[$index] as $k => $v) {
     if(in_array(pathinfo($v, PATHINFO_EXTENSION), array('jpg', 'png', 'jpeg')) {
         echo '<option value="'.$v.'">'.$v.'</option>';
     }
}

ファイルの配列についていくつかのことを想定しています。また、readdir() 関数を使用していない理由はありますか?

于 2013-07-11T15:53:58.073 に答える
1

ファイル名が.jpgまたはで終わる場合は、正規表現を使用して一致させることができます.png

for($index=0; $index < $indexCount; $index++) 
{
    if(preg_match("/^.*\.(jpg|png)$/i", $dirArray[$index]) == 1) 
    {
      echo "<option value=\"".$dirArray[$index]."\">".$dirArray[$index]."</option>";
    }
}

/i正規表現の最後は、大文字と小文字を区別しないフラグです。

于 2013-07-11T15:27:49.843 に答える
0
for($index=0; $index < $indexCount; $index++) {
        if (substr($dirArray[$index], 0, 1) != "." 
            && strtolower(substr($dirArray[$index], -3)) == 'png' 
            && strtolower(substr($dirArray[$index], -3)) == 'jpg')
            echo '<option value="'.$dirArray[$index].'">'.$dirArray[$index].'</option>';
 }

これは機能するはずですが、使用するなど、より洗練されたソリューションがありますDirectoryIterator(こちらを参照):

foreach (new DirectoryIterator('your_directory') as $fileInfo) {
    if($fileInfo->isDot() 
        || !in_array($fileInfo->getExtension(), array('png', 'jpg'))) 
        continue;
    echo sprintf('<option value="%s">%s</option>', 
        $fileInfo->getFilename(), 
        $fileInfo->getFilename());
}

コードはテストされていません。少しいじる必要があるかもしれません。

于 2013-07-11T15:42:16.407 に答える