以下PHP代码在目录中查找文件images/galerias/minerales/brutos/
并根据其中的文件夹/图像输出HTML。
<?php
$folders = glob('images/galerias/minerales/brutos/*', GLOB_ONLYDIR);
foreach($folders as $folder) {
echo "<section id='".str_replace(' ', '', (basename($folder)))."' class='gallery'><div id='categoryimg'><p>".basename($folder)."</p></div><!-- SECTION -->".PHP_EOL;
$files = glob("images/galerias/minerales/brutos/".basename($folder)."/*.{jpg}", GLOB_BRACE);
foreach($files as $file) {
echo "<div>".PHP_EOL." <p>".basename($file, ".jpg")."</p>".PHP_EOL." <img src='$file' alt='".basename($file, ".jpg")."'>".PHP_EOL."</div>".PHP_EOL;
}
echo "</section>";
}
?>
这在我的本地服务器上完美运行,但在实时服务器上,它输出(以及其他不相关的行)如下内容:
<img src='images/galerias/regalosmagicos/Otros/Atrapasue#U00f1os.jpg' alt='Atrapasue#U00f1os'>
请注意错误编码的"Atrapasueños",它显示为"Atrapasue#U00f1os"。这会导致网站无法渲染文件名中包含特殊字符的图像。考虑到这在我的服务器上运行良好,我想找到一个关于我应该在哪里更改服务器配置的建议,以便让我的 PHP 输出正确编码行。
自己修复了它 - 问题不在于服务器或 PHP 脚本,但我发现每当我上传名称为 Sandía.jpg
的文件时,cPanel 文件管理器都会自动将其更改为 Sand%EDa.jpg
或类似的东西。所以我还有其他一些事情需要排除故障,但至少我知道我的代码从一开始就在工作。
- c
面板版本:cPanel, Inc. 11.52.2.2
c面板语言设置为:西班牙语
更新
不仅cPanel文件管理器有问题,Kubuntu的Ark存档管理器也有问题。两者都引入了编码问题。真是一团糟,只要考虑到编码问题可能来自任何地方。
我把这个答案留在这里,因为它可能会帮助那些认为自己遇到服务器端编码问题的人,他们可能也想检查cPanel文件管理器。