我试图写一个脚本,打开目录,扫描所有文件(图像),并显示在屏幕上,但问题是,它包含了他们的名字符号和scandir无法处理它。问题符号(SCANDIR,和array_diff,的foreach)
它的确定与没有的符号出现在他们的名字的目录,脚本运行完美,但目录/用他们的名字符号文件是一个大问题。
举例来说,我一共2根目录下的所有文件在目录包含在其名称相同的符号。一个包含“®”,另一个包含“TM”,并且每个文件(图像)都在其名称中包含这些符号,例如:“Right®screen452217.jpg”。因此,重命名目录和文件不是一个选项,这将花费太多时间。
也许有更好的方式,但我直接做到这一点从网址上的屏幕$ _GET。现在是一个本地服务器上,我在的VertrigoServ WAMP服务器工作,那么脚本的样子:
http://127.0.0.1/screenshots/index.php?page=Rights®
http://127.0.0.1/screenshots/index.php?page=Trade%20Marks™
$url = "screens/".$_GET["page"]."";
$scan = scandir($url, SCANDIR_SORT_NONE);
$scaned = array_diff($scan, array('.', '..', 'Thumbs.db'));
foreach($scaned as $shots) {
if ($shots <> "thumbnails") {
echo "<li>".PHP_EOL.
" <img width=\"253\" height=\"158\" src=\"".$url."\\".$shots."\"".
" alt=\"".$shots."\" title=\"".$shots."\".
" </li>".PHP_EOL.PHP_EOL;
}
}
SCANDIR报告这些错误:
The system cannot find the file specified. (code: 2)
failed to open dir: No such file or directory
No such file or directory
和array_diff报告这个错误:
Argument #1 is not an array
最后的foreach报告:
Invalid argument supplied for foreach()
我也尝试改变编码mb_convert_encoding()和iconv(),但没有运气。
我的最好成绩是不断变化的网址,而不是使用后“®”或“™”我的windows-1252 ASCII Encoding Reference:
http://127.0.0.1/screenshots/index.php?page=Rights%AE
http://127.0.0.1/screenshots/index.php?page=Trade%20Marks%99
然后,一切都过去了,没有错误,但不是显示图像, “IMG SRC” 的模样:
screens/Rights�\Right�452217.jpg
这仍然是问题,因为不显示图像。我喜欢用scandir,因为我已经完成了这个页面,但是我无法通过符号来解决这个问题。你能帮我吗 ?