1

この質問の元のコードとそこのティムの修正に基づいて(回答1)、次のことを達成しようとしています:

次のような画像を含むフォルダー「img」があります。

  • image_123.jpg
  • image_123_alternate.jpg
  • image_456.jpg
  • image_456_alternate.jpg
  • image_789.jpg
  • image_789_alternate.jpg
  • など...
    (注: すべての画像は 200px/200px の同じサイズです)

「img」フォルダからプルする場合、単純な HTML ページは次のように画像とファイル名を表示する必要があります。

ファイル名に「_alternate」部分を含む実際の画像 (およびこれらのみ) + テキストボックス内の画像の下にある「_alternate」部分を含まない (ファイル拡張子なしの) 画像ファイル名。すべてのペアはアルファベット順にプルする必要があります。以下の例では、太字の大文字が実際に表示される画像を示しています。

IMAGE_123_ALTERNATE
テキストボックス: "image_123"

IMAGE_456_ALTERNATE
テキストボックス: "image_456"

IMAGE_789_ALTERNATE
テキストボックス: "image_789"

これは私がこれまでに持っているものですが、これはすべての画像とファイル名を表示します:

<?php
$dir = opendir("img");
while (($file = readdir($dir)) !== false)
{
echo "<a href='img/".$file."' target='_blank'> <img src='img/".$file."'width='200' height='200' /></a><br />";
echo "<textarea>$file</textarea><br /><br />";
}
closedir($dir);
?> 

どんな助けでも大歓迎です!

どうもありがとう!

4

3 に答える 3

0

このコードは、すべての画像のリストをアルファベット順に表示する必要があります(PHPのGLOB関数を使用)。

次に、HTML画像(「_alternate」画像につながる)と画像のファイル名(パス「_alternate」または「extension」なし)を出力します。

<?php

    foreach (glob("img/*_alternate.jpg") as $file) {

         $filename_parts = pathinfo($file);
         $filename = $filename_parts['filename'];
         $filename = str_replace("_alternate", "", $filename);

         echo "<div>";
         echo "<img src=\"/$file\" width=\"200\" height=\"200\" />";
         echo "<p>$filename</p>"; 

    }

?>

新しいファイル名を見つける関数とHTMLコードを出力する部分を分解して、読みやすく理解しやすくしました。必要に応じて、これらを1つの関数にマージできます。

于 2013-02-24T20:23:48.150 に答える
0
$files = new \DirectoryIterator('img'); // <- this should be the full absolute path!
$images = array();

// pick up jpg images that end in 'alternate'
foreach($files as $file){
  $name = $file->getBasename('.jpg');
  if(strripos($name, 'alternate') === (strlen($name) - 9))
    $images[] = $name;        
}

// sort them
sort($images, SORT_STRING);

// and do your thing here with $images...
var_dump($images);
于 2013-02-24T20:24:19.867 に答える
0

while ループで if ステートメントを使用するだけです。ファイル名に代替が含まれているかどうかを確認します。代替が含まれていない場合は、テキスト領域を同じに保ちながら、ファイル拡張子を「_alternate.ext」に置き換えて同じコードを実行します。代替が含まれている場合は、何もしません。そうすれば、半分のファイルしか処理できません。

于 2013-02-24T20:11:21.660 に答える