0

「@2x」で終わるファイル名のファイルを単純にスキップして、このコードに実装したい:

$fullres = glob("gallery/*.*");
        for ($i=0; $i<count($fullres); $i++)

            {                           
                $num = $fullres[$i];                        
                echo '<a href="'.$num.'" ><img src="/slir/?w=60&amp;h=80&amp;c=3x4&amp;q=85&amp;i=/'.$num.'" alt=""  /></a>';
            }

それは実際に可能ですか?

4

4 に答える 4

0

はい、substr(); を使用できます。

if(substr($num, -3) == '@2x') continue;

$num が定義された後にこの行を追加します。

また、コードを簡素化することもできます

<?php

 $fullres = glob("gallery/*.*");
 foreach($fullres as $num)
 {
     if(substr($num, -3) == '@2x') continue;
     echo '<a href="'.$num.'" ><img src="/slir/?w=60&amp;h=80&amp;c=3x4&amp;q=85&amp;i=/'.$num.'" alt=""  /></a>';
 }

?>

DirectoryIteratorを使用したソリューション

<?php

foreach (new DirectoryIterator('gallery/') as $fileInfo) {
    if($fileInfo->isDot() || substr($fileInfo->getFileName(), -3) == '@2x')) continue;
    echo '<a href="'.$fileInfo->getFilename().'" ><img src="/slir/?w=60&amp;h=80&amp;c=3x4&amp;q=85&amp;i=/'.$fileInfo->getFilename().'" alt=""  /></a>';
}

?>
于 2013-05-18T10:21:38.420 に答える
0

glob()オプションは、を使用して返された配列をフィルタリングすることpreg_grep()です。

$fullres = glob("gallery/*.*");
$files = preg_grep('/@2x$/', $fullres, PREG_GREP_INVERT);
foreach ($files as $num)
{
    // ...
}
于 2013-05-18T10:35:05.077 に答える