我試圖寫一個腳本,打開目錄,掃描所有文件(圖像),並顯示在屏幕上,但問題是,它包含了他們的名字符號和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,因爲我已經完成了這個頁面,但是我無法通過符號來解決這個問題。你能幫我嗎 ?