我使用以下代码扫描文件夹中的图像:
<?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'));
});
这在本地主机和我自己的服务器上都有效,但是当我将其移动到我的客户端服务器时,当我单击图像时标题不会出现。
值得注意的是,我必须添加一个.htaccess文件与行"AddHandler应用程序/x-httpd-php5 .php"到我的客户端的服务器,以使scandir
函数工作。这两者有关联吗?我怎样才能解决这个问题?
如手册所述,返回数组的filename
键(或PATHINFO_FILENAME
)需要php 5.2或更新版本。要确定这是否是问题所在,可以通过检查呈现的HTML文档的源代码来检查输出的内容。
同样,你不需要修改htaccess文件来让php脚本工作。请修改全局服务器配置。
正如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,因为它是为这种功能构建的。