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 文档的源代码来检查输出的内容。

此外,您不需要修改 htaccess 文件以使 php 脚本正常工作。相反,修改全局服务器配置。

于 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 回答