1

次のコードを使用して、フォルダーの画像をスキャンしています。

<?php
    $dir = 'img/product/subproduct/cat/';
    $scan = scandir($dir);
        for ($i = 0; $i<count($scan); $i++) {
            $path_parts = pathinfo($scan[$i]); // to remove file extension
            if ($scan[$i] != '.' && $scan[$i] != '..') {
                echo '<img src="' . $dir . $scan[$i] . '" alt="' . $path_parts['filename'] . '" width="50" height="50" />';
            }
        };
?>

次に、クリックした画像を拡大して表示し、「alt」属性をキャプションとして追加します。

$('#id img').click(function () {
    var imageName = $(this).attr('alt');
    var chopped = imageName.split('.');
    $('#titlel').empty();
    $('#titlel')
        .prepend(chopped[0]);
    $img = $(this);
    $('#idBig img').attr('src', $img.attr('src'));
});

これはローカルホストと自分のサーバーの両方で機能しますが、クライアントのサーバーに移動するとすぐに、画像をクリックしてもキャプションが表示されません。

関数を機能させるには、「AddHandler application/x-httpd-php5 .php」という行を含む .htaccess ファイルをクライアントのサーバーに追加する必要があったことに注意してscandirください。それは関係ありますか?どうすればこれを修正できますか?

提案をいただければ幸いです。

4

2 に答える 2

2

マニュアルに記載されているようfilenameに、返される配列 (または)のキーには、 PATHINFO_FILENAMEphp 5.2 以降が必要です。それが問題かどうかを調べるには、レンダリングされた HTML ドキュメントのソース コードを調べて、何が出力されるかを確認します。

また、php スクリプトが機能するように htaccess ファイルを変更する必要はありません。代わりに、グローバル サーバー構成を変更します。

于 2011-11-07T20:37:12.257 に答える
1

phihag が述べたように、'filename' の pathinfo() は PHP >= 5.2.0 で使用できるように見えるため、以前のバージョンを実行している場合は、次のことを試すことができます (テストされていません):

$path_parts = pathinfo($scan[$i]);

// Subtract strlen of extension from strlen of entire filename
//  (+1 for '.')
$filenameStrLen = (strlen($path_parts['basename']) - strlen($path_parts['extension'])) + 1;

// Substr basename from 0 to strlen
$filenameWithNoExtension = substr($path_parts['basename'], 0, $filenameStrLen);    

このタイプの機能用に構築されたDirectoryIteratorを調べることをお勧めします。

于 2011-11-07T20:58:28.197 に答える