###前提・実現したいこと
現在、仕事上でPHP(CakePHP)を用いてwebアプリケーションを作成しています。
そのwebアプリケーションの中で、実行するPHPファイルが置かれているサーバとは、別のサーバに共有フォルダを置き、そのフォルダ内のファイルおよびフォルダを列挙する機能があります。
###発生している問題
共有先はwindowsであり、ファイル名は文字コードがsjis-winとなっているため、ファイル名にいわゆる「ダメ文字」が含まれている場合に、pathinfo()
等が正しく取得できません。
ファイル名にダメ文字が含まれている場合でも、正しく情報を取得する方法をご教授願えますでしょうか。
###補足情報(言語/FW/ツール等のバージョンなど)
共有先 windows7
PHP 5.6.12
CakePHP 2.7.7
以上、よろしくお願いします。
###追記 ソースコード
PHP
1$path = SHARED_FOLDER . $no; // SHARED_FOLDERは列挙するフォルダのパス,$noはIDのようなもの 2$sharedFiles = getSharedFiles($path); 3 4function getSharedFiles($path){ 5 setlocale(LC_ALL, 'ja_JP.UTF-8'); 6 $search = str_replace(DS, '/', rtrim($path, DS) . DS . '*'); //DSはDIRECTORY_SEPARATOR 7 $files = glob($search); 8 $info = array (); 9 foreach($files as $file) { 10 $data = array (); 11 $pathInfo = pathinfo($file); 12 if(is_file($file)) { 13 $data['FILE_TYPE'] = 'file'; 14 $data['FILE_NM'] = mb_convert_encoding($pathInfo['basename'], 'utf-8', 'sjis-win'); 15 $data['PARENT_DIR'] = mb_convert_encoding($pathInfo['dirname'], 'utf-8', 'sjis-win'); 16 $data['SUB_FILES'] = ''; 17 } else if(is_dir($file)) { 18 $data['FILE_TYPE'] = 'dir'; 19 $data['FILE_NM'] = mb_convert_encoding($pathInfo['basename'], 'utf-8', 'sjis-win'); 20 $data['PARENT_DIR'] = mb_convert_encoding($pathInfo['dirname'], 'utf-8', 'sjis-win'); 21 $data['SUB_FILES'] = getSharedFiles($file); 22 } 23 $info[] = $data; 24 } 25 return $info; 26} 27
###再追記 具体的な実行例
列挙対象のフォルダ
\hoge\fuga\6
対象フォルダ内には「ソフト」「テスト」という2のフォルダが存在している
実行結果
$sharedFilesの中身
array (size=2) 0 => (ソフトフォルダの情報) array (size=0) empty 1 => (テストフォルダの情報) array (size=4) 'FILE_TYPE' => string 'dir' (length=3) 'FILE_NM' => string 'eスト' (length=7) 'PARENT_DIR' => string '\\hoge\fuga\6' (length=17) 'SUB_FILES' => array (size=0) empty

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/07 06:46
退会済みユーザー
2016/01/07 07:06 編集
2016/01/07 07:13
退会済みユーザー
2016/01/07 07:17
2016/01/07 07:21
退会済みユーザー
2016/01/07 07:23
2016/01/07 07:33
退会済みユーザー
2016/01/07 07:39
2016/01/07 08:04
退会済みユーザー
2016/01/07 08:23
2016/01/07 08:31
退会済みユーザー
2016/01/07 08:39 編集
2016/01/07 08:40
退会済みユーザー
2016/01/07 08:50 編集
2016/01/07 08:49
退会済みユーザー
2016/01/07 08:54 編集
退会済みユーザー
2016/01/07 09:10
2016/01/07 09:14
退会済みユーザー
2016/01/07 09:19
2016/01/07 09:33