2012-02-24 30 views
0

myFolderi擁有數千個具有關鍵字文本名稱的圖像文件。我試圖從圖像列表中讀取並將文本上傳到dB字段。問題是一些文本有utf8字符像l'Été那樣顯示出來 t讀取文件將文本插入到mysql

如何讀取外來字符以便將重音插入到dB字段中? 這是IM如何處理現在

function ListFiles($dir) { 

if($dh = opendir($dir)) { 

    $files = Array(); 
    $inner_files = Array(); 

    while($file = readdir($dh)) { 
     if($file != "." && $file != ".." && $file[0] != '.') { 
      if(is_dir($dir . "/" . $file)) { 
       $inner_files = ListFiles($dir . "/" . $file); 
       if(is_array($inner_files)) $files = array_merge($files, $inner_files); 
      } else { 
       array_push($files, $dir . "/" . $file);//$dir = directory name 
       //array_push($files, $dir); 
      } 
     }    
    } 
    closedir($dh); 
    return $files; 
} 
} 

    foreach (ListFiles('../../myDirectory') as $key=>$file){ 
//$file = preg_replace('@[^\0-\x80]@u',"", $file); 
    echo $file ."<br />"; 
} 

,這是產生相同的結果

$str = "l’Été"; 
utf8_decode($str); 
echo $str; 
+3

'utf8_decode()' - http://php.net/manual/en/function.utf8-decode.php – 2012-02-24 21:48:15

+0

數據庫和/或表格必須設置爲utf(整理和/或字符集見:(http://dev.mysql.com/doc/refman/5.0/en/charset-table.html)) – horatio 2012-02-24 21:58:42

+0

另請參閱:http://developer.loftdigital。 com/blog/php-utf-8-cheatsheet – horatio 2012-02-24 21:59:34

回答

0

該解決方案可以爲你工作,它會通過在一個directoy所有文件循環,然後recursivly通過任何目錄直到它結束了大量的文件。

香港專業教育學院增加了一些點,你可能希望改變,例如,無論輯陣或一維數組(都取決於你可能要保持文件夾結構。

而且,如果你想保存的文件擴展當你的文件名保存到數據庫

代碼

function recursive_search_dir($dir) { 
    if ($handle = opendir($dir)) { 
    while (false !== ($file = readdir($handle))) { 
    if (in_array($file,array(".",".."))) 
     continue; // We dont want to do anything with parent/current directory. 

    if (is_dir($file)) { 
     $result[] = recursive_search_dir($file); // Multi-dimension 
      # OR 
     array_merge($result,recursive_search_dir($file));// Single-dimension if you dont care about folder structure. 
    } else { 
     $result[] = utf8_decode($file); // full file name (includes extention) 
      # OR 
     $result[] = utf8_decode(filename($file,PATHINFO_FILENAME)); // if you only want to capture the name and not the extention. 
    } 
    } 
    closedir($handle); 
    } 
    return $result; 
} 
$files = recursive_search_dir("."); // recursively searcht the current directory.