ディレクトリを開いてすべてのファイル(イメージ)をスキャンして画面に表示するスクリプトを作成しようとしていますが、スキャンダルはそれを処理できません。シンボルの問題(scandir、array_diff、foreach)
名前に記号がないディレクトリでは問題ありませんが、スクリプトは完璧に動作しますが、名前に記号が含まれているディレクトリ/ファイルは大きな問題です。
たとえば、合計2つのディレクトリがあり、そのディレクトリ内のすべてのファイルには、同じ名前のシンボルが含まれています。 1つは「®」を含み、もう1つは「™」を含み、すべての単一のファイル(画像)はこれらのシンボルをその名前に含みます(例:「Right®screen452217.jpg」)。したがって、ディレクトリやファイルの名前を変更することはできません。これには時間がかかります。
もっと良い方法があるかもしれませんが、私はそれを$ _GETの画面上のURLから直接行います。それは、今のところローカルサーバー上にある私はVertrigoServ WAMPサーバに働いていると、スクリプトは、次にようになります。
:このエラーレポートarray_diffThe system cannot find the file specified. (code: 2)
failed to open dir: No such file or directory
No such file or directory
:
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は、これらのエラーを報告します
Argument #1 is not an array
、最終的にはforeachのレポート:
Invalid argument supplied for foreach()
また、mb_convert_encoding()とiconv()でエンコードを変更しようとしましたが、運はありません。
私の最高の結果が「®」の代わりに使用するのでは、URLを変更した後だったか、「™」私は窓-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
画像は表示されないため、まだ問題があります。私はすでにページを完成させているので、スカンドールにこだわっていますが、この問題をシンボルで伝えることはできません。私を助けてくれますか?