5

私は小さなギャラリーを作っています。ディレクトリからファイル名を読み取り、先頭の数字とファイル拡張子をいくつか削除した後、以下のファイル名を印刷したいと思います。

コードには2つのバージョンがあります。

バージョン1はソートされません

$current_dir = "$DOCUMENT_ROOT"."/weddings2/";   
$dir = opendir($current_dir);        // Open the sucker

while ($file = readdir($dir))            // while loop
  {
$parts = explode(".", $file);                    // pull apart the name and dissect by period
if (is_array($parts) && count($parts) > 1) {    // does the dissected array have more than one part
    $extension = end($parts);        // set to we can see last file extension
    $bfile= substr($file, 2); //strips the first two characters
    $cfile= preg_replace(('/\d/'),' ',$bfile);//remove numbers
    $cfile= preg_replace(('/_/'),' ',$cfile); 
    $cfile= preg_replace(('/.jpg/'),' ',$cfile);
            if ($extension == "jpg" OR $extension == "JPG")    // is extension ext or EXT ?
    echo "<td><img src=\"weddings2/$file\"><br />$cfile</td>\n";

    }
}
closedir($dir);        // Close the directory after we are done

バージョン2はソートされますが、ファイル名を操作できません

$current_dir = "$DOCUMENT_ROOT"."/weddings2/";    

$dir = opendir($current_dir);        // Open the sucker

$files = array();
while ($files[] = readdir($dir));
sort($files);
closedir($dir);

foreach ($files as $file)
      if ($file <> "." && $file <> ".." && !preg_match("/^hide/i",$file))


$table_cell .= "<td><img src='".'weddings2/'. rawurlencode($file) ."'><br />$cfile</td>\n";


echo $table_cell;

はい、私は愚かだと知っています。ああ!

4

2 に答える 2

5

編集:あなたのコードには中括弧がありません

あなたが持っている

foreach (...)
      コード
      コード

そしてそれはあるべきです

foreach (...) {
      コード
      コード
}

$parts と foreach ループの後の最後の $cfile の間にコードを挿入するだけです。ループに中括弧を追加するだけで、より多くのコードを挿入できます。また、両方のコード スニペットの if 条件が異なることに注意してください。 1 つの使用または両方を 1 つの条件に組み合わせる場合。

$current_dir = "$DOCUMENT_ROOT"."/weddings2/";    

$dir = opendir($current_dir);        // Open the sucker

$files = array();
while ($files[] = readdir($dir));
sort($files);
closedir($dir);

foreach ($files as $file) {

      //MANIPULATE FILENAME HERE, YOU HAVE $file...

      if ($file <> "." && $file <> ".." && !preg_match("/^hide/i",$file))
      echo "<td><img src='".'weddings2/'. rawurlencode($file) ."'><br />$cfile</td>\n";
}
于 2009-09-02T06:15:56.110 に答える
0

コメント欄に余裕がないので…

Vinko: 簡単にするためにここを編集しています。あなたが持っている必要があります

 $current_dir = "$DOCUMENT_ROOT"."/weddings2/";    
 $dir = opendir($current_dir);        // Open the sucker
 $files = array();
 while ($files[] = readdir($dir));
 sort($files);
 closedir($dir);

 foreach ($files as $file)
 {

    $bfile= substr($file, 2); //strips the first two characters
    $cfile= preg_replace(('/\d/'),'&nbsp;',$bfile);
    $cfile= preg_replace(('/_/'),' ',$cfile);
    $cfile= preg_replace(('/.jpg/'),' ',$cfile);

    if ($file <> "." && $file <> ".." && !preg_match("/^hide/i",$file))

    // echo "<td><img src=\"weddings2/$file\"><br />$cfile</td>\n";
    //echo "<td><img src=\"weddings2/$file\"><br />$cfile</td>\n";

    $table_cell .= "<td><img src='".'weddings2/'. rawurlencode($file) ."'><br />$cfile</td>\n";
    //$table_cell .= "  <li><a href='" .'pdfs/'. rawurlencode($file) ."'>$file</a></li>\n";

    echo $table_cell;
}

あなたが試したことの代わりに

私はこれを試しました:

 $current_dir = "$DOCUMENT_ROOT"."/weddings2/";    
 $dir = opendir($current_dir);        // Open the sucker
 $files = array();
 while ($files[] = readdir($dir));
 sort($files);
 closedir($dir);

  foreach ($files as $file)


    $bfile= substr($file, 2); //strips the first two characters
    $cfile= preg_replace(('/\d/'),'&nbsp;',$bfile);
    $cfile= preg_replace(('/_/'),' ',$cfile);
    $cfile= preg_replace(('/.jpg/'),' ',$cfile);

      if ($file <> "." && $file <> ".." && !preg_match("/^hide/i",$file))

   // echo "<td><img src=\"weddings2/$file\"><br />$cfile</td>\n";
    //echo "<td><img src=\"weddings2/$file\"><br />$cfile</td>\n";

$table_cell .= "<td><img src='".'weddings2/'. rawurlencode($file) ."'><br />$cfile</td>\n";
//$table_cell .= "  <li><a href='" .'pdfs/'. rawurlencode($file) ."'>$file</a></li>\n";

echo $table_cell;

そしてこれを手に入れた

<pre>
<td><img src='weddings2/36%20And%20they%20lived%20happily%20ever%20after.jpg'><br /> And they lived happily ever after </td></pre>

これの代わりに:

<pre>
<td><img src="weddings2/05Wedding_Chapel.jpg"><br />Wedding Chapel </td>
<td><img src="weddings2/06Bride_Flowers.jpg"><br />Bride Flowers </td>
<td><img src="weddings2/09%20Bridemaids%20on%20the%20lawn.jpg"><br /> Bridemaids on the lawn </td>
<td><img src='weddings2/36%20And%20they%20lived%20happily%20ever%20after.jpg'><br /> And they lived happily ever after </td>
</pre>
于 2009-09-02T07:50:30.460 に答える